Author: jimtabor
Date: Mon Jan 5 22:32:16 2015
New Revision: 65990
URL:
http://svn.reactos.org/svn/reactos?rev=65990&view=rev
Log:
[Win32k]
- Fix control list of atoms.
- Add DDE atom.
Modified:
trunk/reactos/win32ss/user/ntuser/class.c
trunk/reactos/win32ss/user/ntuser/ntuser.c
Modified: trunk/reactos/win32ss/user/ntuser/class.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/class.…
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/class.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/class.c [iso-8859-1] Mon Jan 5 22:32:16 2015
@@ -8,6 +8,27 @@
#include <win32k.h>
DBG_DEFAULT_CHANNEL(UserClass);
+
+static PWSTR ControlsList[] =
+{
+ L"Button",
+ L"Edit",
+ L"Static",
+ L"ListBox",
+ L"ScrollBar",
+ L"ComboBox",
+ L"MDIClient",
+ L"ComboLBox",
+ L"DDEMLEvent",
+ L"DDEMLMom",
+ L"DMGClass",
+ L"DDEMLAnsiClient",
+ L"DDEMLUnicodeClient",
+ L"DDEMLAnsiServer",
+ L"DDEMLUnicodeServer",
+ L"IME",
+ L"Ghost",
+};
static NTSTATUS IntDeregisterClassAtom(IN RTL_ATOM Atom);
@@ -350,6 +371,26 @@
return TRUE;
}
+BOOL FASTCALL
+RegisterControlAtoms(VOID)
+{
+ RTL_ATOM Atom;
+ UNICODE_STRING ClassName;
+ INT i = 0;
+
+ while ( i < ICLS_DESKTOP)
+ {
+ RtlInitUnicodeString(&ClassName, ControlsList[i]);
+ if (IntRegisterClassAtom(&ClassName, &Atom))
+ {
+ gpsi->atomSysClass[i] = Atom;
+ ERR("Reg Control Atoms 0x%x\n",Atom);
+ }
+ i++;
+ }
+ return TRUE;
+}
+
static NTSTATUS
IntDeregisterClassAtom(IN RTL_ATOM Atom)
{
@@ -1026,7 +1067,7 @@
Class->fnid = fnID;
Class->CSF_flags = dwFlags;
- if (LookupFnIdToiCls(Class->fnid, &iCls))
+ if (LookupFnIdToiCls(Class->fnid, &iCls) &&
gpsi->atomSysClass[iCls] == 0)
{
gpsi->atomSysClass[iCls] = Class->atomClassName;
}
Modified: trunk/reactos/win32ss/user/ntuser/ntuser.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/ntuser…
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/ntuser.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/ntuser.c [iso-8859-1] Mon Jan 5 22:32:16 2015
@@ -7,6 +7,8 @@
#include <win32k.h>
DBG_DEFAULT_CHANNEL(UserMisc);
+
+BOOL FASTCALL RegisterControlAtoms(VOID);
/* GLOBALS ********************************************************************/
@@ -17,6 +19,7 @@
ATOM AtomWndObj; // Window Object atom.
ATOM AtomLayer; // Window Layer atom.
ATOM AtomFlashWndState; // Window Flash State atom.
+ATOM AtomDDETrack; // Window DDE Tracking atom.
HINSTANCE hModClient = NULL;
BOOL ClientPfnInit = FALSE;
ATOM gaGuiConsoleWndClass;
@@ -27,6 +30,8 @@
NTSTATUS FASTCALL
InitUserAtoms(VOID)
{
+ RegisterControlAtoms();
+
gpsi->atomSysClass[ICLS_MENU] = 32768;
gpsi->atomSysClass[ICLS_DESKTOP] = 32769;
gpsi->atomSysClass[ICLS_DIALOG] = 32770;
@@ -46,12 +51,15 @@
gpsi->atomFrostedWindowProp = IntAddGlobalAtom(L"SysFrostedWindow",
TRUE);
+ AtomDDETrack = IntAddGlobalAtom(L"SysDT", TRUE);
+
/*
* FIXME: AddPropW uses the global kernel atom table, thus leading to conflicts if we
use
- * the win32k atom table for this ones. What is the right thing to do ?
+ * the win32k atom table for this one. What is the right thing to do ?
*/
// AtomWndObj = IntAddGlobalAtom(L"SysWNDO", TRUE);
NtAddAtom(L"SysWNDO", 14, &AtomWndObj);
+
AtomLayer = IntAddGlobalAtom(L"SysLayer", TRUE);
AtomFlashWndState = IntAddGlobalAtom(L"FlashWState", TRUE);