Add 16<->32 bit message mappings for WM_COPYDATA messages.

This commit is contained in:
Rein Klazes 2005-05-05 16:43:17 +00:00 committed by Alexandre Julliard
parent 1e43a90727
commit aecbcac865
2 changed files with 36 additions and 0 deletions

View file

@ -1298,6 +1298,16 @@ INT WINPROC_MapMsg16To32A( HWND hwnd, UINT16 msg16, WPARAM16 wParam16, UINT *pms
*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 hwnd, UINT msg, WPARAM wParam, LPARAM lPar
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, UINT msg32, WPARAM wParam32,
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, UINT msg, WPARAM wParam, LPARAM lParam,
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:
{

View file

@ -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