Alexandre Julliard : user32: Pre-allocate the window procedure for the static class.
Alexandre Julliard
julliard at winehq.org
Thu Dec 17 10:37:10 CST 2009
Module: wine
Branch: master
Commit: 80a09a7899e6e91981c9fc8bdbc9fafbb8284437
URL: http://source.winehq.org/git/wine.git/?a=commit;h=80a09a7899e6e91981c9fc8bdbc9fafbb8284437
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Dec 17 13:00:04 2009 +0100
user32: Pre-allocate the window procedure for the static class.
---
dlls/user32/controls.h | 1 +
dlls/user32/static.c | 26 ++++----------------------
dlls/user32/winproc.c | 13 +++++++++++++
3 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/dlls/user32/controls.h b/dlls/user32/controls.h
index 274e59f..72a65a0 100644
--- a/dlls/user32/controls.h
+++ b/dlls/user32/controls.h
@@ -38,6 +38,7 @@ enum builtin_winprocs
WINPROC_EDIT,
WINPROC_LISTBOX,
WINPROC_SCROLLBAR,
+ WINPROC_STATIC,
NB_BUILTIN_WINPROCS
};
diff --git a/dlls/user32/static.c b/dlls/user32/static.c
index b33033a..0f778bb 100644
--- a/dlls/user32/static.c
+++ b/dlls/user32/static.c
@@ -60,8 +60,6 @@ static void STATIC_PaintIconfn( HWND hwnd, HDC hdc, DWORD style );
static void STATIC_PaintBitmapfn( HWND hwnd, HDC hdc, DWORD style );
static void STATIC_PaintEnhMetafn( HWND hwnd, HDC hdc, DWORD style );
static void STATIC_PaintEtchedfn( HWND hwnd, HDC hdc, DWORD style );
-static LRESULT WINAPI StaticWndProcA( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
-static LRESULT WINAPI StaticWndProcW( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
static COLORREF color_3dshadow, color_3ddkshadow, color_3dhighlight;
@@ -104,8 +102,8 @@ const struct builtin_class_descr STATIC_builtin_class =
{
staticW, /* name */
CS_DBLCLKS | CS_PARENTDC, /* style */
- StaticWndProcA, /* procA */
- StaticWndProcW, /* procW */
+ NULL, /* procA */
+ BUILTIN_WINPROC(WINPROC_STATIC), /* procW */
STATIC_EXTRA_BYTES, /* extra */
IDC_ARROW, /* cursor */
0 /* brush */
@@ -405,6 +403,8 @@ LRESULT StaticWndProc_common( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
LONG full_style = GetWindowLongW( hwnd, GWL_STYLE );
LONG style = full_style & SS_TYPEMASK;
+ if (!IsWindow( hwnd )) return 0;
+
switch (uMsg)
{
case WM_CREATE:
@@ -604,24 +604,6 @@ LRESULT StaticWndProc_common( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
return lResult;
}
-/***********************************************************************
- * StaticWndProcA
- */
-static LRESULT WINAPI StaticWndProcA( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
-{
- if (!IsWindow( hWnd )) return 0;
- return wow_handlers.static_proc(hWnd, uMsg, wParam, lParam, FALSE);
-}
-
-/***********************************************************************
- * StaticWndProcW
- */
-static LRESULT WINAPI StaticWndProcW( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
-{
- if (!IsWindow( hWnd )) return 0;
- return wow_handlers.static_proc(hWnd, uMsg, wParam, lParam, TRUE);
-}
-
static void STATIC_PaintOwnerDrawfn( HWND hwnd, HDC hdc, DWORD style )
{
DRAWITEMSTRUCT dis;
diff --git a/dlls/user32/winproc.c b/dlls/user32/winproc.c
index c9ed557..d2e75a1 100644
--- a/dlls/user32/winproc.c
+++ b/dlls/user32/winproc.c
@@ -59,6 +59,8 @@ static LRESULT WINAPI ListBoxWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARA
static LRESULT WINAPI ListBoxWndProcW( 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 StaticWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
+static LRESULT WINAPI StaticWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
static WINDOWPROC winproc_array[MAX_WINPROCS] =
{
@@ -67,6 +69,7 @@ static WINDOWPROC winproc_array[MAX_WINPROCS] =
{ EditWndProcA, EditWndProcW }, /* WINPROC_EDIT */
{ ListBoxWndProcA, ListBoxWndProcW }, /* WINPROC_LISTBOX */
{ ScrollBarWndProcA, ScrollBarWndProcW }, /* WINPROC_SCROLLBAR */
+ { StaticWndProcA, StaticWndProcW }, /* WINPROC_STATIC */
};
static UINT builtin_used = NB_BUILTIN_WINPROCS;
@@ -1102,6 +1105,16 @@ static LRESULT WINAPI ScrollBarWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPA
return wow_handlers.scrollbar_proc( hwnd, msg, wParam, lParam, TRUE );
}
+static LRESULT WINAPI StaticWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
+{
+ return wow_handlers.static_proc( hwnd, msg, wParam, lParam, FALSE );
+}
+
+static LRESULT WINAPI StaticWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
+{
+ return wow_handlers.static_proc( hwnd, msg, wParam, lParam, TRUE );
+}
+
/**********************************************************************
* UserRegisterWowHandlers (USER32.@)
More information about the wine-cvs
mailing list