Alexandre Julliard : user32: Move 16-bit window creation functions to 16-bit files.
Alexandre Julliard
julliard at winehq.org
Thu Dec 17 10:37:16 CST 2009
Module: wine
Branch: master
Commit: 8494682f2d7bca32a89a82f266a5b97c979d92f3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8494682f2d7bca32a89a82f266a5b97c979d92f3
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Dec 17 15:03:32 2009 +0100
user32: Move 16-bit window creation functions to 16-bit files.
---
dlls/user32/controls.h | 1 +
dlls/user32/msg16.c | 67 ++++++++++++++++++++++++++++++++++++++
dlls/user32/win.c | 84 +----------------------------------------------
dlls/user32/win.h | 1 +
dlls/user32/winproc.c | 1 +
dlls/user32/wnd16.c | 13 +++++++
6 files changed, 85 insertions(+), 82 deletions(-)
diff --git a/dlls/user32/controls.h b/dlls/user32/controls.h
index 9abc997..e7aa408 100644
--- a/dlls/user32/controls.h
+++ b/dlls/user32/controls.h
@@ -98,6 +98,7 @@ struct wow_handlers32
LRESULT (*mdiclient_proc)(HWND,UINT,WPARAM,LPARAM,BOOL);
LRESULT (*scrollbar_proc)(HWND,UINT,WPARAM,LPARAM,BOOL);
LRESULT (*static_proc)(HWND,UINT,WPARAM,LPARAM,BOOL);
+ HWND (*create_window)(CREATESTRUCTW*,LPCWSTR,HINSTANCE,UINT);
WNDPROC (*alloc_winproc)(WNDPROC,WNDPROC);
};
diff --git a/dlls/user32/msg16.c b/dlls/user32/msg16.c
index 27a47a4..0e57988 100644
--- a/dlls/user32/msg16.c
+++ b/dlls/user32/msg16.c
@@ -2003,6 +2003,73 @@ BOOL16 WINAPI TranslateMDISysAccel16( HWND16 hwndClient, LPMSG16 msg )
/***********************************************************************
+ * CreateWindowEx (USER.452)
+ */
+HWND16 WINAPI CreateWindowEx16( DWORD exStyle, LPCSTR className,
+ LPCSTR windowName, DWORD style, INT16 x,
+ INT16 y, INT16 width, INT16 height,
+ HWND16 parent, HMENU16 menu,
+ HINSTANCE16 instance, LPVOID data )
+{
+ CREATESTRUCTA cs;
+ char buffer[256];
+ HWND hwnd;
+
+ /* Fix the coordinates */
+
+ cs.x = (x == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)x;
+ cs.y = (y == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)y;
+ cs.cx = (width == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)width;
+ cs.cy = (height == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)height;
+
+ /* Create the window */
+
+ cs.lpCreateParams = data;
+ cs.hInstance = HINSTANCE_32(instance);
+ cs.hMenu = HMENU_32(menu);
+ cs.hwndParent = WIN_Handle32( parent );
+ cs.style = style;
+ cs.lpszName = windowName;
+ cs.lpszClass = className;
+ cs.dwExStyle = exStyle;
+
+ /* map to module handle */
+ if (instance) instance = GetExePtr( instance );
+
+ /* load the menu */
+ if (!menu && (style & (WS_CHILD | WS_POPUP)) != WS_CHILD)
+ {
+ WNDCLASSA class;
+
+ if (GetClassInfoA( HINSTANCE_32(instance), className, &class ))
+ cs.hMenu = HMENU_32( LoadMenu16( instance, class.lpszMenuName ));
+ }
+
+ if (!IS_INTRESOURCE(className))
+ {
+ WCHAR bufferW[256];
+
+ if (!MultiByteToWideChar( CP_ACP, 0, className, -1, bufferW, sizeof(bufferW)/sizeof(WCHAR) ))
+ return 0;
+ hwnd = wow_handlers32.create_window( (CREATESTRUCTW *)&cs, bufferW,
+ HINSTANCE_32(instance), 0 );
+ }
+ else
+ {
+ if (!GlobalGetAtomNameA( LOWORD(className), buffer, sizeof(buffer) ))
+ {
+ ERR( "bad atom %x\n", LOWORD(className));
+ return 0;
+ }
+ cs.lpszClass = buffer;
+ hwnd = wow_handlers32.create_window( (CREATESTRUCTW *)&cs, (LPCWSTR)className,
+ HINSTANCE_32(instance), 0 );
+ }
+ return HWND_16( hwnd );
+}
+
+
+/***********************************************************************
* button_proc16
*/
static LRESULT button_proc16( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode )
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 9b2cc89..8f43e92 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -27,9 +27,6 @@
#include <string.h>
#include "windef.h"
#include "winbase.h"
-#include "wine/winbase16.h"
-#include "wine/winuser16.h"
-#include "wownt32.h"
#include "wine/server.h"
#include "wine/unicode.h"
#include "win.h"
@@ -884,7 +881,7 @@ void WIN_DestroyThreadWindows( HWND hwnd )
*/
static void WIN_FixCoordinates( CREATESTRUCTW *cs, INT *sw)
{
-#define IS_DEFAULT(x) ((x) == CW_USEDEFAULT || (x) == CW_USEDEFAULT16)
+#define IS_DEFAULT(x) ((x) == CW_USEDEFAULT || (x) == (SHORT)0x8000)
POINT pos[2];
if (cs->dwExStyle & WS_EX_MDICHILD)
@@ -1072,7 +1069,7 @@ static void dump_window_styles( DWORD style, DWORD exstyle )
*
* Implementation of CreateWindowEx().
*/
-static HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module, UINT flags )
+HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module, UINT flags )
{
INT cx, cy, style, sw = SW_SHOW;
LRESULT result;
@@ -1440,83 +1437,6 @@ failed:
/***********************************************************************
- * CreateWindow (USER.41)
- */
-HWND16 WINAPI CreateWindow16( LPCSTR className, LPCSTR windowName,
- DWORD style, INT16 x, INT16 y, INT16 width,
- INT16 height, HWND16 parent, HMENU16 menu,
- HINSTANCE16 instance, LPVOID data )
-{
- return CreateWindowEx16( 0, className, windowName, style,
- x, y, width, height, parent, menu, instance, data );
-}
-
-
-/***********************************************************************
- * CreateWindowEx (USER.452)
- */
-HWND16 WINAPI CreateWindowEx16( DWORD exStyle, LPCSTR className,
- LPCSTR windowName, DWORD style, INT16 x,
- INT16 y, INT16 width, INT16 height,
- HWND16 parent, HMENU16 menu,
- HINSTANCE16 instance, LPVOID data )
-{
- CREATESTRUCTA cs;
- char buffer[256];
-
- /* Fix the coordinates */
-
- cs.x = (x == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)x;
- cs.y = (y == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)y;
- cs.cx = (width == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)width;
- cs.cy = (height == CW_USEDEFAULT16) ? CW_USEDEFAULT : (INT)height;
-
- /* Create the window */
-
- cs.lpCreateParams = data;
- cs.hInstance = HINSTANCE_32(instance);
- cs.hMenu = HMENU_32(menu);
- cs.hwndParent = WIN_Handle32( parent );
- cs.style = style;
- cs.lpszName = windowName;
- cs.lpszClass = className;
- cs.dwExStyle = exStyle;
-
- /* map to module handle */
- if (instance) instance = GetExePtr( instance );
-
- /* load the menu */
- if (!menu && (style & (WS_CHILD | WS_POPUP)) != WS_CHILD)
- {
- WNDCLASSA class;
-
- if (GetClassInfoA( HINSTANCE_32(instance), className, &class ))
- cs.hMenu = HMENU_32( LoadMenu16( instance, class.lpszMenuName ));
- }
-
- if (!IS_INTRESOURCE(className))
- {
- WCHAR bufferW[256];
-
- if (!MultiByteToWideChar( CP_ACP, 0, className, -1, bufferW, sizeof(bufferW)/sizeof(WCHAR) ))
- return 0;
- return HWND_16( WIN_CreateWindowEx( (CREATESTRUCTW *)&cs, bufferW, HINSTANCE_32(instance), 0 ));
- }
- else
- {
- if (!GlobalGetAtomNameA( LOWORD(className), buffer, sizeof(buffer) ))
- {
- ERR( "bad atom %x\n", LOWORD(className));
- return 0;
- }
- cs.lpszClass = buffer;
- return HWND_16( WIN_CreateWindowEx( (CREATESTRUCTW *)&cs, (LPCWSTR)className,
- HINSTANCE_32(instance), 0 ));
- }
-}
-
-
-/***********************************************************************
* CreateWindowExA (USER32.@)
*/
HWND WINAPI CreateWindowExA( DWORD exStyle, LPCSTR className,
diff --git a/dlls/user32/win.h b/dlls/user32/win.h
index 743c67e..ab37e3e 100644
--- a/dlls/user32/win.h
+++ b/dlls/user32/win.h
@@ -87,6 +87,7 @@ extern ULONG WIN_SetStyle( HWND hwnd, ULONG set_bits, ULONG clear_bits ) DECLSPE
extern BOOL WIN_GetRectangles( HWND hwnd, RECT *rectWindow, RECT *rectClient ) DECLSPEC_HIDDEN;
extern LRESULT WIN_DestroyWindow( HWND hwnd ) DECLSPEC_HIDDEN;
extern void WIN_DestroyThreadWindows( HWND hwnd ) DECLSPEC_HIDDEN;
+extern HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module, UINT flags ) DECLSPEC_HIDDEN;
extern BOOL WIN_IsWindowDrawable( HWND hwnd, BOOL ) DECLSPEC_HIDDEN;
extern HWND *WIN_ListChildren( HWND hwnd ) DECLSPEC_HIDDEN;
extern LONG_PTR WIN_SetWindowLong( HWND hwnd, INT offset, UINT size, LONG_PTR newval, BOOL unicode ) DECLSPEC_HIDDEN;
diff --git a/dlls/user32/winproc.c b/dlls/user32/winproc.c
index 5bfd407..bd30b49 100644
--- a/dlls/user32/winproc.c
+++ b/dlls/user32/winproc.c
@@ -1135,6 +1135,7 @@ void WINAPI UserRegisterWowHandlers( const struct wow_handlers16 *new, struct wo
orig->mdiclient_proc = MDIClientWndProc_common;
orig->scrollbar_proc = ScrollBarWndProc_common;
orig->static_proc = StaticWndProc_common;
+ orig->create_window = WIN_CreateWindowEx;
orig->alloc_winproc = WINPROC_AllocProc;
wow_handlers = *new;
diff --git a/dlls/user32/wnd16.c b/dlls/user32/wnd16.c
index f3f7e67..4c2f2f2 100644
--- a/dlls/user32/wnd16.c
+++ b/dlls/user32/wnd16.c
@@ -305,6 +305,19 @@ BOOL16 WINAPI EndPaint16( HWND16 hwnd, const PAINTSTRUCT16* lps )
}
+/***********************************************************************
+ * CreateWindow (USER.41)
+ */
+HWND16 WINAPI CreateWindow16( LPCSTR className, LPCSTR windowName,
+ DWORD style, INT16 x, INT16 y, INT16 width,
+ INT16 height, HWND16 parent, HMENU16 menu,
+ HINSTANCE16 instance, LPVOID data )
+{
+ return CreateWindowEx16( 0, className, windowName, style,
+ x, y, width, height, parent, menu, instance, data );
+}
+
+
/**************************************************************************
* ShowWindow (USER.42)
*/
More information about the wine-cvs
mailing list