Alexandre Julliard : user32: Don' t pass the 16-bit instance through to 32-bit MessageBoxIndirectA.

Alexandre Julliard julliard at winehq.org
Mon Dec 28 09:16:02 CST 2009


Module: wine
Branch: master
Commit: d51a6b673c22ad31321822bcb1c9a9ed0675eca0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d51a6b673c22ad31321822bcb1c9a9ed0675eca0

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Dec 23 17:11:53 2009 +0100

user32: Don't pass the 16-bit instance through to 32-bit MessageBoxIndirectA.

---

 dlls/user.exe16/window.c |   31 +++++++++++++++++++++++++++----
 1 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/dlls/user.exe16/window.c b/dlls/user.exe16/window.c
index c746a1f..244924f 100644
--- a/dlls/user.exe16/window.c
+++ b/dlls/user.exe16/window.c
@@ -23,6 +23,9 @@
 #include "user_private.h"
 #include "wine/list.h"
 #include "wine/server.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(win);
 
 /* size of buffer needed to store an atom string */
 #define ATOM_BUFFER_SIZE 256
@@ -2099,17 +2102,37 @@ INT16 WINAPI SetWindowRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 redraw )
  */
 INT16 WINAPI MessageBoxIndirect16( LPMSGBOXPARAMS16 msgbox )
 {
+    char caption[256], text[256];
     MSGBOXPARAMSA msgbox32;
 
     msgbox32.cbSize             = msgbox->cbSize;
     msgbox32.hwndOwner          = WIN_Handle32( msgbox->hwndOwner );
-    msgbox32.hInstance          = HINSTANCE_32(msgbox->hInstance);
-    msgbox32.lpszText           = MapSL(msgbox->lpszText);
-    msgbox32.lpszCaption        = MapSL(msgbox->lpszCaption);
+    msgbox32.hInstance          = 0;
     msgbox32.dwStyle            = msgbox->dwStyle;
-    msgbox32.lpszIcon           = MapSL(msgbox->lpszIcon);
+    msgbox32.lpszIcon           = NULL;
     msgbox32.dwContextHelpId    = msgbox->dwContextHelpId;
     msgbox32.lpfnMsgBoxCallback = msgbox->lpfnMsgBoxCallback;
     msgbox32.dwLanguageId       = msgbox->dwLanguageId;
+
+    if (!HIWORD(msgbox->lpszCaption))
+    {
+        LoadString16( msgbox->hInstance, LOWORD(msgbox->lpszCaption), caption, sizeof(caption) );
+        msgbox32.lpszCaption = caption;
+    }
+    else msgbox32.lpszCaption = MapSL(msgbox->lpszCaption);
+
+    if (!HIWORD(msgbox->lpszText))
+    {
+        LoadString16( msgbox->hInstance, LOWORD(msgbox->lpszText), text, sizeof(text) );
+        msgbox32.lpszText = text;
+    }
+    else msgbox32.lpszText = MapSL(msgbox->lpszText);
+
+    if ((msgbox->dwStyle & MB_ICONMASK) == MB_USERICON)
+    {
+        FIXME( "user icon %s not supported\n", debugstr_a( MapSL(msgbox->lpszIcon) ));
+        msgbox32.dwStyle &= ~MB_USERICON;
+    }
+
     return MessageBoxIndirectA( &msgbox32 );
 }




More information about the wine-cvs mailing list