16 bit hwnd in SendmessageA/W
Rein Klazes
wijn at wanadoo.nl
Sat May 7 05:08:21 CDT 2005
Hi,
Another case where I don't think I know enough of the finer details for
a
correct solution.
MS Visual C++ 1.5 IDE - 16 bit win application - communicates its window
handle to WINTEE32.EXE - win32 app - to handle the build process:
>> E:\\MSVC\\BIN\\WINTEE32.EXE -h2a -vn
5e is the 16 bit window handle.
Here it sends data to the IDE:
>> 0035:Call user32.SendMessageA(ffff002a,0000004a,0008004a,77a3fe28) ret=77a51649
That does not work, SendMessageA does only expect full 32 bit win
handles.
Things work with this patch:
==========================================================================
--- wine/dlls/user/message.c 2005-05-05 10:26:28.000000000 +0200
+++ mywine/dlls/user/message.c 2005-05-05 20:07:46.000000000 +0200
@@ -2388,6 +2388,13 @@ LRESULT WINAPI SendMessageTimeoutA( HWND
return 1;
}
+ /* if it is not a 32bit window handle */
+ if( !IsWindow( hwnd)) {
+ /* try if it is a 16 bit handle */
+ hwnd = WIN_Handle32( (HWND16) hwnd );
+ info.hwnd = hwnd;
+ }
+
if (!(dest_tid = GetWindowThreadProcessId( hwnd, &dest_pid )))
return 0;
if (USER_IsExitingThread( dest_tid )) return 0;
==========================================================================
Is anything else needed, I wonder?
Rein.
More information about the wine-devel
mailing list