From 038073d31c8677cc25b7d67c641fcb02bf7b341a Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 12 Jul 2009 02:09:49 +0000 Subject: [PATCH] - Start initializing client pfn arrays so that they can be loaded into the server information structure and help register class atoms in win32k. svn path=/trunk/; revision=41905 --- .../dll/win32/user32/controls/regcontrol.c | 78 +++++++++++++++++++ reactos/include/reactos/win32k/ntuser.h | 29 ++++--- 2 files changed, 96 insertions(+), 11 deletions(-) diff --git a/reactos/dll/win32/user32/controls/regcontrol.c b/reactos/dll/win32/user32/controls/regcontrol.c index 63fd47a28f0..6498651bf08 100644 --- a/reactos/dll/win32/user32/controls/regcontrol.c +++ b/reactos/dll/win32/user32/controls/regcontrol.c @@ -61,3 +61,81 @@ BOOL WINAPI RegisterSystemControls(VOID) return NtUserRegisterSystemClasses(sizeof(cls) / sizeof(cls[0]), cls); } + + +#if 0 +static PFNCLIENT pfnClientA; +static PFNCLIENT pfnClientW; +static PFNCLIENTWORKER pfnClientWorker; + +BOOL WINAPI RegisterClientPFN(VOID) +{ + NTSTATUS Status; + + pfnClientA.pfnScrollBarWndProc = ScrollBarWndProcA; + pfnClientW.pfnScrollBarWndProc = ScrollBarWndProcW; + pfnClientA.pfnTitleWndProc = IconTitleWndProc; + pfnClientW.pfnTitleWndProc = IconTitleWndProc; + pfnClientA.pfnMenuWndProc = PopupMenuWndProcA; + pfnClientW.pfnMenuWndProc = PopupMenuWndProcW; + pfnClientA.pfnDesktopWndProc = DesktopWndProc; // Fixme! + pfnClientW.pfnDesktopWndProc = DesktopWndProc; + pfnClientA.pfnDefWindowProc = DefWindowProcA; + pfnClientW.pfnDefWindowProc = DefWindowProcW; + pfnClientA.pfnMessageWindowProc = DefWindowProcA; + pfnClientW.pfnMessageWindowProc = DefWindowProcW; + pfnClientA.pfnSwitchWindowProc = DefWindowProcA; + pfnClientW.pfnSwitchWindowProc = DefWindowProcW; + pfnClientA.pfnButtonWndProc = ButtonWndProcA; + pfnClientW.pfnButtonWndProc = ButtonWndProcW + pfnClientA.pfnComboBoxWndProc = ComboWndProcA; + pfnClientW.pfnComboBoxWndProc = ComboWndProcW; + pfnClientA.pfnComboListBoxProc = ListBoxWndProcA; + pfnClientW.pfnComboListBoxProc = ListBoxWndProcW; + pfnClientA.pfnDialogWndProc = DefDlgProcA; + pfnClientW.pfnDialogWndProc = DefDlgProcW; + pfnClientA.pfnEditWndProc = EditWndProcA; + pfnClientW.pfnEditWndProc = EditWndProcW; + pfnClientA.pfnListBoxWndProc = ListBoxWndProcA; + pfnClientW.pfnListBoxWndProc = ListBoxWndProcW; + pfnClientA.pfnMDIClientWndProc = MDIClientWndProcA; + pfnClientW.pfnMDIClientWndProc = MDIClientWndProcW; + pfnClientA.pfnStaticWndProc = StaticWndProcA; + pfnClientW.pfnStaticWndProc = StaticWndProcW; + pfnClientA.pfnImeWndProc = DefWindowProcA; + pfnClientW.pfnImeWndProc = DefWindowProcW; + pfnClientA.pfnGhostWndProc = DefWindowProcA; + pfnClientW.pfnGhostWndProc = DefWindowProcW; + pfnClientA.pfnHkINLPCWPSTRUCT = DefWindowProcA; + pfnClientW.pfnHkINLPCWPSTRUCT = DefWindowProcW; + pfnClientA.pfnHkINLPCWPRETSTRUCT = DefWindowProcA; + pfnClientW.pfnHkINLPCWPRETSTRUCT = DefWindowProcW; + pfnClientA.pfnDispatchHook = DefWindowProcA; + pfnClientW.pfnDispatchHook = DefWindowProcW; + pfnClientA.pfnDispatchDefWindowProc = DefWindowProcA; + pfnClientW.pfnDispatchDefWindowProc = DefWindowProcW; + pfnClientA.pfnDispatchMessage = DefWindowProcA; + pfnClientW.pfnDispatchMessage = DefWindowProcW; + pfnClientA.pfnMDIActivateDlgProc = DefWindowProcA; + pfnClientW.pfnMDIActivateDlgProc = DefWindowProcW; + + pfnClientWorker.pfnButtonWndProc = ButtonWndProc_common; + pfnClientWorker.pfnComboBoxWndProc = ComboWndProc_common; + pfnClientWorker.pfnComboListBoxProc = ListBoxWndProc_common; +// pfnClientWorker.pfnDialogWndProc = DefDlgProc_common; + pfnClientWorker.pfnEditWndProc = EditWndProc_common; + pfnClientWorker.pfnListBoxWndProc = ListBoxWndProc_common; + pfnClientWorker.pfnMDIClientWndProc = MDIClientWndProc_common; + pfnClientWorker.pfnStaticWndProc = StaticWndProc_common; + pfnClientWorker.pfnImeWndProc = User32DefWindowProc; + pfnClientWorker.pfnGhostWndProc = User32DefWindowProc; + pfnClientWorker.pfnCtfHookProc = User32DefWindowProc; + + Status = NtUserInitializeClientPfnArrays( &pfnClientA, + &pfnClientW, + &pfnClientWorker, + User32Instance); + + return NT_SUCCESS(Status) ? TRUE : FALSE; +} +#endif diff --git a/reactos/include/reactos/win32k/ntuser.h b/reactos/include/reactos/win32k/ntuser.h index 9bb69f464aa..abc10503d61 100644 --- a/reactos/include/reactos/win32k/ntuser.h +++ b/reactos/include/reactos/win32k/ntuser.h @@ -231,19 +231,26 @@ typedef struct _PFNCLIENT WNDPROC pfnMDIActivateDlgProc; } PFNCLIENT, *PPFNCLIENT; +/* + Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode ); + Windows uses Ansi == TRUE, Wine uses Unicode == TRUE. + */ + +typedef LRESULT(CALLBACK *WNDPROC_EX)(HWND,UINT,WPARAM,LPARAM,BOOL); + typedef struct _PFNCLIENTWORKER { - WNDPROC pfnButtonWndProc; - WNDPROC pfnComboBoxWndProc; - WNDPROC pfnComboListBoxProc; - WNDPROC pfnDialogWndProc; - WNDPROC pfnEditWndProc; - WNDPROC pfnListBoxWndProc; - WNDPROC pfnMDIClientWndProc; - WNDPROC pfnStaticWndProc; - WNDPROC pfnImeWndProc; - WNDPROC pfnGhostWndProc; - WNDPROC pfnCtfHookProc; + WNDPROC_EX pfnButtonWndProc; + WNDPROC_EX pfnComboBoxWndProc; + WNDPROC_EX pfnComboListBoxProc; + WNDPROC_EX pfnDialogWndProc; + WNDPROC_EX pfnEditWndProc; + WNDPROC_EX pfnListBoxWndProc; + WNDPROC_EX pfnMDIClientWndProc; + WNDPROC_EX pfnStaticWndProc; + WNDPROC_EX pfnImeWndProc; + WNDPROC_EX pfnGhostWndProc; + WNDPROC_EX pfnCtfHookProc; } PFNCLIENTWORKER, *PPFNCLIENTWORKER; struct _WND;