|
|
/*++
* * WOW v1.0 * * Copyright (c) 1991, Microsoft Corporation * * WDDE.H * WOW32 DDE worker routines. * * History: * WOW DDE support designed and developed by ChandanC * --*/
#include "wowclip.h"
typedef struct _DDENODE { HAND16 Initiator; struct _DDENODE *Next; } DDENODE, *LPDDENODE;
/* DDE h16 and h32 object alias structure
*/
typedef struct _HDDE { struct _HDDE *pDDENext; // pointer to next hDDE alias
HAND16 To_hwnd; // window that will receive this message
HAND16 From_hwnd; // window that sent this message
HAND16 hMem16; // handle of WOW app allocated 16 bit object
HANDLE hMem32; // handle of WOW allocated 32 bit object
WORD DdeMsg; // message id
WORD DdeFormat; // message format
WORD DdeFlags; // indicates if it is metafile handle
HAND16 h16; // original h16 for bad apps doing EXECUTE
} HDDE, *PHDDE;
typedef struct _DDEINFO { WORD Msg; // message id
WORD Format; // message format
WORD Flags; // indicates if it is metafile handle
HAND16 h16; // original h16 for bad apps doing EXECUTE
} DDEINFO, *PDDEINFO;
typedef struct _CPDATA { struct _CPDATA *Next; // pointer to next CopyData alias
HAND16 To_hwnd; // window that will receive this message
HAND16 From_hwnd; // window that sent this message
DWORD Mem16; // handle of allocated 16 bit object
DWORD Mem32; // handle of allocated 32 bit object
DWORD Flags; // No real structure is complete without flags
} CPDATA, *PCPDATA;
// This is used by GetMessage to thunk a 32 bit message to the 16 bit
// message.
#define FREEDDEML 0x0001
#define DDE_EXECUTE_FREE_H16 0x0001
#define DDE_EXECUTE_FREE_MEM 0x0002
#define DDE_METAFILE 0x0004
#define DDE_PACKET 0x0008
// This flag is used when a 16 bit app sends data using WM_COPYDATA message
//
#define COPYDATA_16 0x0001
/*----------------------------------------------------------------------------
| DDEDATA structure | | WM_DDE_DATA parameter structure for hData (LOWORD(lParam)). | The actual size of this structure depends on the size of | the Value array. | ----------------------------------------------------------------------------*/
typedef struct { unsigned short wStatus; short cfFormat; HAND16 Value; } DDEDATA16;
typedef struct { unsigned short wStatus; short cfFormat; HANDLE Value; } DDEDATA32;
VOID WI32DDEAddInitiator (HAND16 Initiator); VOID WI32DDEDeleteInitiator(HAND16 Initiator); BOOL WI32DDEInitiate(HAND16 Initiator); BOOL DDEDeletehandle(HAND16 h16, HANDLE h32); HANDLE DDEFind32(HAND16 h16); HAND16 DDEFind16(HANDLE h32); BOOL DDEAddhandle(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 hMem16, HANDLE hMem32, PDDEINFO pDdeInfo); HAND16 DDECopyhData16(HAND16 To_hwnd, HAND16 From_hwnd, HANDLE h32, PDDEINFO pDdeInfo); HANDLE DDECopyhData32(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 h16, PDDEINFO pDdeInfo); VOID W32MarkDDEHandle (HAND16 hMem16); VOID W32UnMarkDDEHandle (HAND16 hMem16); HANDLE DDEFindPair32(HAND16 To_hwnd, HAND16 From_hwnd, HAND16 hMem16); HAND16 DDEFindPair16(HAND16 To_hwnd, HAND16 From_hwnd, HANDLE hMem32); BOOL W32DDEFreeGlobalMem32 (HANDLE h32); ULONG FASTCALL WK32WowDdeFreeHandle (PVDMFRAME pFrame); BOOL W32DdeFreeHandle16 (HAND16 h16); PHDDE DDEFindNode16 (HAND16 h16); PHDDE DDEFindNode32 (HANDLE h32); PHDDE DDEFindAckNode (HAND16 To_hwnd, HAND16 From_hwnd, HANDLE hMem32); BOOL CopyDataAddNode (HAND16 To_hwnd, HAND16 From_hwnd, DWORD Mem16, DWORD Mem32, DWORD Flags); VPVOID CopyDataFindData16 (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem); PCPDATA CopyDataFindData32 (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem); BOOL CopyDataDeleteNode (HWND16 To_hwnd, HWND16 From_hwnd, DWORD Mem); BOOL DDEIsTargetMSDraw(HAND16 To_hwnd); HAND16 Copyh32Toh16 (int cb, LPBYTE lpMem32); HANDLE Copyh16Toh32 (int cb, LPBYTE lpMem16); VOID FixMetafile32To16 (LPMETAFILEPICT lpMemMeta32, LPMETAFILEPICT16 lpMemMeta16);
|