WM_COPYDATA 16<->32 bit message mapping
Rein Klazes
wijn at wanadoo.nl
Thu May 5 04:51:45 CDT 2005
Hi,
WM_COPY messages are used between 16 bit MS Visual C++ IDE and 32 bit
build tools.
Changelog:
include/wine : winuser16.h
dlls/user : winproc.c
Add 16<->32 bit message mappings for WM_COPYDATA messages.
Rein.
-------------- next part --------------
--- wine/include/wine/winuser16.h 2004-01-28 22:41:56.000000000 +0100
+++ mywine/include/wine/winuser16.h 2005-05-05 11:05:08.000000000 +0200
@@ -555,6 +555,13 @@ typedef struct
LONG l;
} DRAGINFO16, *LPDRAGINFO16;
+/* undocumented */
+typedef struct tagCOPYDATASTRUCT16 {
+ DWORD dwData;
+ DWORD cbData;
+ SEGPTR lpData;
+} COPYDATASTRUCT16, *PCOPYDATASTRUCT16;
+
#define DRAGOBJ_PROGRAM 0x0001
#define DRAGOBJ_DATA 0x0002
#define DRAGOBJ_DIRECTORY 0x0004
--- wine/dlls/user/winproc.c 2005-04-27 12:23:24.000000000 +0200
+++ mywine/dlls/user/winproc.c 2005-05-05 11:00:46.000000000 +0200
@@ -1298,6 +1298,16 @@ INT WINPROC_MapMsg16To32A( HWND hwnd, UI
*plparam = (LPARAM)cis;
}
return 1;
+ case WM_COPYDATA:
+ {
+ PCOPYDATASTRUCT16 pcds16 = MapSL(*plparam);
+ PCOPYDATASTRUCT pcds = HeapAlloc ( GetProcessHeap(), 0, sizeof(*pcds));
+ pcds->dwData = pcds16->dwData;
+ pcds->cbData = pcds16->cbData;
+ pcds->lpData = MapSL( pcds16->lpData);
+ *plparam = (LPARAM)pcds;
+ }
+ return 1;
case WM_DELETEITEM:
{
DELETEITEMSTRUCT16* dis16 = MapSL(*plparam);
@@ -1608,6 +1618,7 @@ LRESULT WINPROC_UnmapMsg16To32A( HWND hw
case WM_COMPAREITEM:
case WM_DELETEITEM:
case WM_DRAWITEM:
+ case WM_COPYDATA:
HeapFree( GetProcessHeap(), 0, (LPVOID)lParam );
break;
case WM_MEASUREITEM:
@@ -2124,6 +2135,16 @@ INT WINPROC_MapMsg32ATo16( HWND hwnd, UI
case WM_VSCROLL:
*plparam = MAKELPARAM( HIWORD(wParam32), (HWND16)*plparam );
return 0;
+ case WM_COPYDATA:
+ {
+ PCOPYDATASTRUCT pcds32 = (PCOPYDATASTRUCT) *plparam;
+ PCOPYDATASTRUCT16 pcds = HeapAlloc( GetProcessHeap(), 0, sizeof( *pcds));
+ pcds->dwData = pcds32->dwData;
+ pcds->cbData = pcds32->cbData;
+ pcds->lpData = MapLS( pcds32->lpData);
+ *plparam = MapLS( pcds );
+ }
+ return 1;
case WM_CTLCOLORMSGBOX:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
@@ -2510,6 +2531,14 @@ void WINPROC_UnmapMsg32ATo16( HWND hwnd,
HeapFree( GetProcessHeap(), 0, ptr );
}
break;
+ case WM_COPYDATA:
+ {
+ PCOPYDATASTRUCT16 pcds = MapSL( p16->lParam );
+ UnMapLS( p16->lParam );
+ UnMapLS( pcds->lpData );
+ HeapFree( GetProcessHeap(), 0, pcds );
+ }
+ break;
case CB_GETDROPPEDCONTROLRECT:
case LB_GETITEMRECT:
{
More information about the wine-patches
mailing list