122 lines
4.2 KiB
C
122 lines
4.2 KiB
C
/*++
|
||
*
|
||
* 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);
|
||
|