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 ClsExtra;
INT WndExtra; INT WndExtra;
PVOID Dce; PVOID Dce;
DWORD fnID;
HINSTANCE hInstance; HINSTANCE hInstance;
HANDLE hIcon; /* FIXME - Use pointer! */ HANDLE hIcon; /* FIXME - Use pointer! */
HANDLE hIconSm; /* FIXME - Use pointer! */ HANDLE hIconSm; /* FIXME - Use pointer! */
@ -264,6 +265,32 @@ typedef struct _W32CLIENTINFO
PW32THREADINFO GetW32ThreadInfo(VOID); PW32THREADINFO GetW32ThreadInfo(VOID);
PW32PROCESSINFO GetW32ProcessInfo(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 DWORD
NTAPI NTAPI
NtUserAssociateInputContext( NtUserAssociateInputContext(
@ -2186,11 +2213,11 @@ NtUserSetTimer
TIMERPROC lpTimerFunc TIMERPROC lpTimerFunc
); );
DWORD BOOL
NTAPI NTAPI
NtUserSetWindowFNID( NtUserSetWindowFNID(
DWORD Unknown0, HWND hWnd,
DWORD Unknown1); WORD fnID);
LONG LONG
NTAPI NTAPI

View file

@ -4159,19 +4159,43 @@ CLEANUP:
/* /*
* @unimplemented * @implemented
*/ */
DWORD STDCALL BOOL STDCALL
NtUserSetWindowFNID(DWORD Unknown0, NtUserSetWindowFNID(HWND hWnd,
DWORD Unknown1) 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 * @implemented
*/ */