Alexandre Julliard : user32: Export DIALOG_get_info and DIALOG_DoDialogBox through the WoW handlers.
Alexandre Julliard
julliard at winehq.org
Thu Dec 24 10:27:15 CST 2009
Module: wine
Branch: master
Commit: eb36bb2e47c77dd12f098d62f471b94c7695c103
URL: http://source.winehq.org/git/wine.git/?a=commit;h=eb36bb2e47c77dd12f098d62f471b94c7695c103
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Dec 22 17:57:42 2009 +0100
user32: Export DIALOG_get_info and DIALOG_DoDialogBox through the WoW handlers.
---
dlls/user32/controls.h | 3 +++
dlls/user32/dialog16.c | 8 ++++----
dlls/user32/msg16.c | 2 +-
dlls/user32/winproc.c | 20 +++++++++++---------
dlls/user32/wnd16.c | 6 ++++--
5 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/dlls/user32/controls.h b/dlls/user32/controls.h
index 279dc4c..65269c5 100644
--- a/dlls/user32/controls.h
+++ b/dlls/user32/controls.h
@@ -116,6 +116,8 @@ struct wow_handlers32
LRESULT (*static_proc)(HWND,UINT,WPARAM,LPARAM,BOOL);
HWND (*create_window)(CREATESTRUCTW*,LPCWSTR,HINSTANCE,UINT);
WNDPROC (*alloc_winproc)(WNDPROC,BOOL);
+ struct tagDIALOGINFO *(*get_dialog_info)(HWND,BOOL);
+ INT (*dialog_box_loop)(HWND,HWND);
};
extern struct wow_handlers16 wow_handlers DECLSPEC_HIDDEN;
@@ -129,6 +131,7 @@ extern LRESULT ScrollBarWndProc_common(HWND,UINT,WPARAM,LPARAM,BOOL) DECLSPEC_HI
extern LRESULT StaticWndProc_common(HWND,UINT,WPARAM,LPARAM,BOOL) DECLSPEC_HIDDEN;
/* 16-bit support */
+extern struct wow_handlers32 wow_handlers32 DECLSPEC_HIDDEN;
extern HWND create_window16(CREATESTRUCTW*,LPCWSTR,HINSTANCE,UINT) DECLSPEC_HIDDEN;
extern void free_module_classes(HINSTANCE16) DECLSPEC_HIDDEN;
extern void register_wow_handlers(void) DECLSPEC_HIDDEN;
diff --git a/dlls/user32/dialog16.c b/dlls/user32/dialog16.c
index 95f009f..0e86a73 100644
--- a/dlls/user32/dialog16.c
+++ b/dlls/user32/dialog16.c
@@ -177,7 +177,7 @@ static LPCSTR DIALOG_GetControl16( LPCSTR p, DLG_CONTROL_INFO *info )
static BOOL DIALOG_CreateControls16( HWND hwnd, LPCSTR template,
const DLG_TEMPLATE *dlgTemplate, HINSTANCE16 hInst )
{
- DIALOGINFO *dlgInfo = DIALOG_get_info( hwnd, TRUE );
+ DIALOGINFO *dlgInfo = wow_handlers32.get_dialog_info( hwnd, TRUE );
DLG_CONTROL_INFO info;
HWND hwndCtrl, hwndDefButton = 0;
INT items = dlgTemplate->nbItems;
@@ -441,7 +441,7 @@ static HWND DIALOG_CreateIndirect16( HINSTANCE16 hInst, LPCVOID dlgTemplate,
if (modal && (flags & DF_OWNERENABLED)) DIALOG_EnableOwner(owner);
return 0;
}
- dlgInfo = DIALOG_get_info( hwnd, TRUE );
+ dlgInfo = wow_handlers32.get_dialog_info( hwnd, TRUE );
dlgInfo->hwndFocus = 0;
dlgInfo->hUserFont = hUserFont;
dlgInfo->hMenu = HMENU_32( hMenu );
@@ -745,7 +745,7 @@ INT16 WINAPI DialogBoxParam16( HINSTANCE16 hInst, LPCSTR template,
{
HWND owner = WIN_Handle32(owner16);
hwnd = DIALOG_CreateIndirect16( hInst, data, owner, dlgProc, param, TRUE );
- if (hwnd) ret = DIALOG_DoDialogBox( hwnd, owner );
+ if (hwnd) ret = wow_handlers32.dialog_box_loop( hwnd, owner );
GlobalUnlock16( hmem );
}
FreeResource16( hmem );
@@ -765,7 +765,7 @@ INT16 WINAPI DialogBoxIndirectParam16( HINSTANCE16 hInst, HANDLE16 dlgTemplate,
if (!(ptr = GlobalLock16( dlgTemplate ))) return -1;
hwnd = DIALOG_CreateIndirect16( hInst, ptr, owner, dlgProc, param, TRUE );
GlobalUnlock16( dlgTemplate );
- if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
+ if (hwnd) return wow_handlers32.dialog_box_loop( hwnd, owner );
return -1;
}
diff --git a/dlls/user32/msg16.c b/dlls/user32/msg16.c
index 1d96738..aef453d 100644
--- a/dlls/user32/msg16.c
+++ b/dlls/user32/msg16.c
@@ -38,7 +38,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(msg);
DWORD USER16_AlertableWait = 0;
-static struct wow_handlers32 wow_handlers32;
+struct wow_handlers32 wow_handlers32;
static LRESULT cwp_hook_callback( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
LRESULT *result, void *arg )
diff --git a/dlls/user32/winproc.c b/dlls/user32/winproc.c
index 354efe0..c38c087 100644
--- a/dlls/user32/winproc.c
+++ b/dlls/user32/winproc.c
@@ -1160,15 +1160,17 @@ static int free_icon_handle( HICON handle )
*/
void WINAPI UserRegisterWowHandlers( const struct wow_handlers16 *new, struct wow_handlers32 *orig )
{
- orig->button_proc = ButtonWndProc_common;
- orig->combo_proc = ComboWndProc_common;
- orig->edit_proc = EditWndProc_common;
- orig->listbox_proc = ListBoxWndProc_common;
- 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;
+ orig->button_proc = ButtonWndProc_common;
+ orig->combo_proc = ComboWndProc_common;
+ orig->edit_proc = EditWndProc_common;
+ orig->listbox_proc = ListBoxWndProc_common;
+ 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;
+ orig->get_dialog_info = DIALOG_get_info;
+ orig->dialog_box_loop = DIALOG_DoDialogBox;
wow_handlers = *new;
}
diff --git a/dlls/user32/wnd16.c b/dlls/user32/wnd16.c
index b4741ff..9509bd0 100644
--- a/dlls/user32/wnd16.c
+++ b/dlls/user32/wnd16.c
@@ -848,7 +848,8 @@ LONG WINAPI GetWindowLong16( HWND16 hwnd16, INT16 offset )
return 0;
}
}
- else if (offset == DWLP_DLGPROC) is_winproc = (DIALOG_get_info( hwnd, FALSE ) != NULL);
+ else if (offset == DWLP_DLGPROC)
+ is_winproc = (wow_handlers32.get_dialog_info( hwnd, FALSE ) != NULL);
}
retvalue = GetWindowLongA( hwnd, offset );
if (is_winproc) retvalue = (LONG_PTR)WINPROC_GetProc16( (WNDPROC)retvalue, FALSE );
@@ -864,7 +865,8 @@ LONG WINAPI SetWindowLong16( HWND16 hwnd16, INT16 offset, LONG newval )
HWND hwnd = WIN_Handle32( hwnd16 );
BOOL is_winproc = (offset == GWLP_WNDPROC);
- if (offset == DWLP_DLGPROC) is_winproc = (DIALOG_get_info( hwnd, FALSE ) != NULL);
+ if (offset == DWLP_DLGPROC)
+ is_winproc = (wow_handlers32.get_dialog_info( hwnd, FALSE ) != NULL);
if (is_winproc)
{
More information about the wine-cvs
mailing list