user32: Pre-allocate the window procedure for the MDI client class.

This commit is contained in:
Alexandre Julliard 2009-12-17 13:01:11 +01:00
parent 0cbf191add
commit 53393b0f1c
3 changed files with 16 additions and 22 deletions

View File

@ -38,6 +38,7 @@ enum builtin_winprocs
WINPROC_DIALOG, WINPROC_DIALOG,
WINPROC_EDIT, WINPROC_EDIT,
WINPROC_LISTBOX, WINPROC_LISTBOX,
WINPROC_MDICLIENT,
WINPROC_SCROLLBAR, WINPROC_SCROLLBAR,
WINPROC_STATIC, WINPROC_STATIC,
NB_BUILTIN_WINPROCS NB_BUILTIN_WINPROCS

View File

@ -150,8 +150,6 @@ static LONG MDI_ChildActivate( HWND, HWND );
static LRESULT MDI_RefreshMenu(MDICLIENTINFO *); static LRESULT MDI_RefreshMenu(MDICLIENTINFO *);
static HWND MDI_MoreWindowsDialog(HWND); static HWND MDI_MoreWindowsDialog(HWND);
static LRESULT WINAPI MDIClientWndProcA( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI MDIClientWndProcW( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );
/* -------- Miscellaneous service functions ---------- /* -------- Miscellaneous service functions ----------
* *
@ -188,8 +186,8 @@ const struct builtin_class_descr MDICLIENT_builtin_class =
{ {
mdiclientW, /* name */ mdiclientW, /* name */
0, /* style */ 0, /* style */
MDIClientWndProcA, /* procA */ NULL, /* procA */
MDIClientWndProcW, /* procW */ BUILTIN_WINPROC(WINPROC_MDICLIENT), /* procW */
sizeof(MDICLIENTINFO), /* extra */ sizeof(MDICLIENTINFO), /* extra */
IDC_ARROW, /* cursor */ IDC_ARROW, /* cursor */
(HBRUSH)(COLOR_APPWORKSPACE+1) /* brush */ (HBRUSH)(COLOR_APPWORKSPACE+1) /* brush */
@ -1271,24 +1269,6 @@ LRESULT MDIClientWndProc_common( HWND hwnd, UINT message, WPARAM wParam, LPARAM
DefWindowProcA( hwnd, message, wParam, lParam ); DefWindowProcA( hwnd, message, wParam, lParam );
} }
/***********************************************************************
* MDIClientWndProcA
*/
static LRESULT WINAPI MDIClientWndProcA( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
if (!IsWindow(hwnd)) return 0;
return wow_handlers.mdiclient_proc( hwnd, message, wParam, lParam, FALSE );
}
/***********************************************************************
* MDIClientWndProcW
*/
static LRESULT WINAPI MDIClientWndProcW( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
if (!IsWindow(hwnd)) return 0;
return wow_handlers.mdiclient_proc( hwnd, message, wParam, lParam, TRUE );
}
/*********************************************************************** /***********************************************************************
* DefFrameProcA (USER32.@) * DefFrameProcA (USER32.@)
*/ */

View File

@ -57,6 +57,8 @@ LRESULT WINAPI EditWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
static LRESULT WINAPI EditWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI EditWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI MDIClientWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI MDIClientWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI ScrollBarWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI ScrollBarWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI ScrollBarWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI ScrollBarWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static LRESULT WINAPI StaticWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); static LRESULT WINAPI StaticWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
@ -69,6 +71,7 @@ static WINDOWPROC winproc_array[MAX_WINPROCS] =
{ DefDlgProcA, DefDlgProcW }, /* WINPROC_DIALOG */ { DefDlgProcA, DefDlgProcW }, /* WINPROC_DIALOG */
{ EditWndProcA, EditWndProcW }, /* WINPROC_EDIT */ { EditWndProcA, EditWndProcW }, /* WINPROC_EDIT */
{ ListBoxWndProcA, ListBoxWndProcW }, /* WINPROC_LISTBOX */ { ListBoxWndProcA, ListBoxWndProcW }, /* WINPROC_LISTBOX */
{ MDIClientWndProcA, MDIClientWndProcW }, /* WINPROC_MDICLIENT */
{ ScrollBarWndProcA, ScrollBarWndProcW }, /* WINPROC_SCROLLBAR */ { ScrollBarWndProcA, ScrollBarWndProcW }, /* WINPROC_SCROLLBAR */
{ StaticWndProcA, StaticWndProcW }, /* WINPROC_STATIC */ { StaticWndProcA, StaticWndProcW }, /* WINPROC_STATIC */
}; };
@ -1096,6 +1099,16 @@ static LRESULT WINAPI ListBoxWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARA
return wow_handlers.listbox_proc( hwnd, msg, wParam, lParam, TRUE ); return wow_handlers.listbox_proc( hwnd, msg, wParam, lParam, TRUE );
} }
static LRESULT WINAPI MDIClientWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
return wow_handlers.mdiclient_proc( hwnd, msg, wParam, lParam, FALSE );
}
static LRESULT WINAPI MDIClientWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
return wow_handlers.mdiclient_proc( hwnd, msg, wParam, lParam, TRUE );
}
static LRESULT WINAPI ScrollBarWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) static LRESULT WINAPI ScrollBarWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{ {
return wow_handlers.scrollbar_proc( hwnd, msg, wParam, lParam, FALSE ); return wow_handlers.scrollbar_proc( hwnd, msg, wParam, lParam, FALSE );