NtUserSetWindowFNID is needed for supporting NtUserGetClassName bGetRealClass.

svn path=/trunk/; revision=33733
This commit is contained in:
James Tabor 2008-05-28 02:36:25 +00:00
parent 31335eaca5
commit 5cccc4e338
2 changed files with 61 additions and 10 deletions

View file

@ -77,6 +77,7 @@ typedef struct _WINDOWCLASS
INT ClsExtra;
INT WndExtra;
PVOID Dce;
DWORD fnID;
HINSTANCE hInstance;
HANDLE hIcon; /* FIXME - Use pointer! */
HANDLE hIconSm; /* FIXME - Use pointer! */
@ -264,6 +265,32 @@ typedef struct _W32CLIENTINFO
PW32THREADINFO GetW32ThreadInfo(VOID);
PW32PROCESSINFO GetW32ProcessInfo(VOID);
// FNID's for NtUserSetWindowFNID
#define FNID_BUTTON 0x02A1
#define FNID_COMBOBOX 0x02A2
#define FNID_COMBOLBOX 0x02A3
#define FNID_DIALOG 0x02A4
#define FNID_EDIT 0x02A5
#define FNID_LISTBOX 0x02A6
#define FNID_MDICLIENT 0x02A7
#define FNID_STATIC 0x02A8
#define FNID_IME 0x02A9
#define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
// Seen during WM_CREATE on error exit too.
// ICLS's for NtUserGetClassName FNID to ICLS
#define ICLS_BUTTON 0
#define ICLS_EDIT 1
#define ICLS_STATIC 2
#define ICLS_LISTBOX 3
#define ICLS_COMBOBOX 5
#define ICLS_MDICLIENT 6
#define ICLS_COMBOLBOX 7
#define ICLS_IME 15
#define ICLS_DIALOG 17
#define ICLS_END 31
DWORD
NTAPI
NtUserAssociateInputContext(
@ -2186,11 +2213,11 @@ NtUserSetTimer
TIMERPROC lpTimerFunc
);
DWORD
BOOL
NTAPI
NtUserSetWindowFNID(
DWORD Unknown0,
DWORD Unknown1);
HWND hWnd,
WORD fnID);
LONG
NTAPI

View file

@ -4159,19 +4159,43 @@ CLEANUP:
/*
* @unimplemented
* @implemented
*/
DWORD STDCALL
NtUserSetWindowFNID(DWORD Unknown0,
DWORD Unknown1)
BOOL STDCALL
NtUserSetWindowFNID(HWND hWnd,
WORD fnID)
{
UNIMPLEMENTED
PWINDOW_OBJECT Window;
PWINDOW Wnd;
DECLARE_RETURN(BOOL);
return 0;
DPRINT("Enter NtUserSetWindowFNID\n");
UserEnterExclusive();
if (!(Window = UserGetWindowObject(hWnd)))
{
RETURN( FALSE);
}
Wnd = Window->Wnd;
if (Wnd->Class)
{ // From user land we only set these.
if ((fnID != FNID_DESTROY) || ((fnID < FNID_BUTTON) && (fnID > FNID_IME)) )
{
RETURN( FALSE);
}
else
Wnd->Class->fnID |= fnID;
}
RETURN( TRUE);
CLEANUP:
DPRINT("Leave NtUserSetWindowFNID\n");
UserLeave();
END_CLEANUP;
}
/*
* @implemented
*/