mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 12:13:10 +00:00
[Win32k]
- Fix control list of atoms. - Add DDE atom. svn path=/trunk/; revision=65990
This commit is contained in:
parent
0c9a650aa9
commit
7de914f84e
2 changed files with 51 additions and 2 deletions
|
@ -9,6 +9,27 @@
|
||||||
#include <win32k.h>
|
#include <win32k.h>
|
||||||
DBG_DEFAULT_CHANNEL(UserClass);
|
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);
|
static NTSTATUS IntDeregisterClassAtom(IN RTL_ATOM Atom);
|
||||||
|
|
||||||
REGISTER_SYSCLASS DefaultServerClasses[] =
|
REGISTER_SYSCLASS DefaultServerClasses[] =
|
||||||
|
@ -350,6 +371,26 @@ IntRegisterClassAtom(IN PUNICODE_STRING ClassName,
|
||||||
return TRUE;
|
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
|
static NTSTATUS
|
||||||
IntDeregisterClassAtom(IN RTL_ATOM Atom)
|
IntDeregisterClassAtom(IN RTL_ATOM Atom)
|
||||||
{
|
{
|
||||||
|
@ -1026,7 +1067,7 @@ IntCreateClass(IN CONST WNDCLASSEXW* lpwcx,
|
||||||
Class->fnid = fnID;
|
Class->fnid = fnID;
|
||||||
Class->CSF_flags = dwFlags;
|
Class->CSF_flags = dwFlags;
|
||||||
|
|
||||||
if (LookupFnIdToiCls(Class->fnid, &iCls))
|
if (LookupFnIdToiCls(Class->fnid, &iCls) && gpsi->atomSysClass[iCls] == 0)
|
||||||
{
|
{
|
||||||
gpsi->atomSysClass[iCls] = Class->atomClassName;
|
gpsi->atomSysClass[iCls] = Class->atomClassName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include <win32k.h>
|
#include <win32k.h>
|
||||||
DBG_DEFAULT_CHANNEL(UserMisc);
|
DBG_DEFAULT_CHANNEL(UserMisc);
|
||||||
|
|
||||||
|
BOOL FASTCALL RegisterControlAtoms(VOID);
|
||||||
|
|
||||||
/* GLOBALS ********************************************************************/
|
/* GLOBALS ********************************************************************/
|
||||||
|
|
||||||
PTHREADINFO gptiCurrent = NULL;
|
PTHREADINFO gptiCurrent = NULL;
|
||||||
|
@ -17,6 +19,7 @@ ATOM AtomMessage; // Window Message atom.
|
||||||
ATOM AtomWndObj; // Window Object atom.
|
ATOM AtomWndObj; // Window Object atom.
|
||||||
ATOM AtomLayer; // Window Layer atom.
|
ATOM AtomLayer; // Window Layer atom.
|
||||||
ATOM AtomFlashWndState; // Window Flash State atom.
|
ATOM AtomFlashWndState; // Window Flash State atom.
|
||||||
|
ATOM AtomDDETrack; // Window DDE Tracking atom.
|
||||||
HINSTANCE hModClient = NULL;
|
HINSTANCE hModClient = NULL;
|
||||||
BOOL ClientPfnInit = FALSE;
|
BOOL ClientPfnInit = FALSE;
|
||||||
ATOM gaGuiConsoleWndClass;
|
ATOM gaGuiConsoleWndClass;
|
||||||
|
@ -27,6 +30,8 @@ static
|
||||||
NTSTATUS FASTCALL
|
NTSTATUS FASTCALL
|
||||||
InitUserAtoms(VOID)
|
InitUserAtoms(VOID)
|
||||||
{
|
{
|
||||||
|
RegisterControlAtoms();
|
||||||
|
|
||||||
gpsi->atomSysClass[ICLS_MENU] = 32768;
|
gpsi->atomSysClass[ICLS_MENU] = 32768;
|
||||||
gpsi->atomSysClass[ICLS_DESKTOP] = 32769;
|
gpsi->atomSysClass[ICLS_DESKTOP] = 32769;
|
||||||
gpsi->atomSysClass[ICLS_DIALOG] = 32770;
|
gpsi->atomSysClass[ICLS_DIALOG] = 32770;
|
||||||
|
@ -46,12 +51,15 @@ InitUserAtoms(VOID)
|
||||||
|
|
||||||
gpsi->atomFrostedWindowProp = IntAddGlobalAtom(L"SysFrostedWindow", TRUE);
|
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
|
* 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);
|
// AtomWndObj = IntAddGlobalAtom(L"SysWNDO", TRUE);
|
||||||
NtAddAtom(L"SysWNDO", 14, &AtomWndObj);
|
NtAddAtom(L"SysWNDO", 14, &AtomWndObj);
|
||||||
|
|
||||||
AtomLayer = IntAddGlobalAtom(L"SysLayer", TRUE);
|
AtomLayer = IntAddGlobalAtom(L"SysLayer", TRUE);
|
||||||
AtomFlashWndState = IntAddGlobalAtom(L"FlashWState", TRUE);
|
AtomFlashWndState = IntAddGlobalAtom(L"FlashWState", TRUE);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue