mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.1 KiB
181 lines
5.1 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1993.
|
|
//
|
|
// File: ddeint.h
|
|
//
|
|
// Contents: This file contains shared macros/state between the server
|
|
// and client directories
|
|
// Classes:
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: 5-04-94 kevinro Commented/cleaned
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//
|
|
// BUGBUG: (KevinRo) The new definition of DVTARGETDEVICE uses an unsized array
|
|
// of bytes at the end. Therefore, the sizeof operator no longer works. So, I
|
|
// have calculated the size of the cbHeader by accounting for each member of
|
|
// the structure independently. I am not too proud of this at the moment,
|
|
// but need to move on.
|
|
//
|
|
|
|
#define DEB_DDE_INIT (DEB_ITRACE|DEB_USER1)
|
|
|
|
// global OLE class used to create windows in OLE.
|
|
extern LPTSTR gOleWindowClass;
|
|
extern HINSTANCE g_hinst;
|
|
|
|
// names of the DDE window classes
|
|
#ifdef _CHICAGO_
|
|
// Note: we have to create a unique string so that we
|
|
// register a unique class for each 16 bit app.
|
|
// The class space is global on chicago.
|
|
//
|
|
|
|
extern LPSTR szOLE_CLASSA;
|
|
extern LPSTR szSYS_CLASSA;
|
|
|
|
#define OLE_CLASSA szOLE_CLASSA
|
|
#define SRVR_CLASSA szSRVR_CLASSA
|
|
|
|
#define DDEWNDCLASS WNDCLASSA
|
|
#define DdeRegisterClass RegisterClassA
|
|
#define DdeUnregisterClass UnregisterClassA
|
|
#define DdeCreateWindowEx SSCreateWindowExA
|
|
|
|
#else
|
|
|
|
#define OLE_CLASS L"Ole2WndClass"
|
|
#define OLE_CLASSA "Ole2WndClass"
|
|
|
|
#define SRVR_CLASS (OLESTR("SrvrWndClass"))
|
|
#define SRVR_CLASSA ("SrvrWndClass")
|
|
|
|
#define DDEWNDCLASS WNDCLASS
|
|
#define DdeRegisterClass RegisterClass
|
|
#define DdeUnregisterClass UnregisterClass
|
|
#define DdeCreateWindowEx CreateWindowEx
|
|
|
|
#endif // !_CHICAGO_
|
|
|
|
STDAPI_(LRESULT) DocWndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
STDAPI_(LRESULT) SrvrWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
STDAPI_(LRESULT) SysWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
|
STDAPI_(LRESULT) ClientDocWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
|
|
|
BOOL SendMsgToChildren (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
|
|
#define SIZEOF_DVTARGETDEVICE_HEADER (sizeof(DWORD) + (sizeof(WORD) * 4))
|
|
|
|
// forward declarations
|
|
class CDefClient;
|
|
typedef CDefClient FAR *LPCLIENT;
|
|
|
|
class CDDEServer;
|
|
typedef CDDEServer FAR *LPSRVR;
|
|
typedef CDDEServer FAR *HDDE; // used by ClassFactory table
|
|
|
|
|
|
typedef struct tagDISPATCHDATA
|
|
{
|
|
SCODE scode; // might be no necessary
|
|
LPVOID pData; // pointer to channel data
|
|
} DISPATCHDATA, *PDISPATCHDATA;
|
|
|
|
|
|
// SERVERCALLEX is an extension of SERVERCALL and represents the set of
|
|
// valid responses from IMessageFilter::HandleIncoming Call.
|
|
|
|
typedef enum tagSERVERCALLEX
|
|
{
|
|
SERVERCALLEX_ISHANDLED = 0, // server can handle the call now
|
|
SERVERCALLEX_REJECTED = 1, // server can not handle the call
|
|
SERVERCALLEX_RETRYLATER = 2, // server suggests trying again later
|
|
SERVERCALLEX_ERROR = 3, // error?
|
|
SERVERCALLEX_CANCELED = 5 // client suggests canceling
|
|
} SERVERCALLEX;
|
|
|
|
|
|
|
|
|
|
//
|
|
// The wire representation of STDDOCDIMENSIONS is a 16-bit
|
|
// format. This means instead of 4 longs, there are
|
|
// 4 shorts. This structure is used below to pick the data
|
|
// from the wire representation. Amazingly stupid, but
|
|
// backward compatible is the name of the game.
|
|
//
|
|
typedef struct tagRECT16
|
|
{
|
|
SHORT left;
|
|
SHORT top;
|
|
SHORT right;
|
|
SHORT bottom;
|
|
|
|
} RECT16, *LPRECT16;
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: ConvertToFullHWND
|
|
//
|
|
// Synopsis: This function is used to convert a 16-bit HWND into a 32-bit
|
|
// hwnd
|
|
//
|
|
// Effects: When running in a VDM, depending on who dispatches the message
|
|
// we can end up with either a 16 or 32 bit window message. This
|
|
// routine is used to make sure we always deal with a 32bit
|
|
// HWND. Otherwise, some of our comparisions are incorrect.
|
|
//
|
|
// Arguments: [hwnd] -- HWND to convert. 16 or 32 bit is fine
|
|
//
|
|
// Returns: Always returns a 32 bit HWND
|
|
//
|
|
// History: 8-03-94 kevinro Created
|
|
//
|
|
// Notes:
|
|
// This routine calls a private function given to use by OLETHK32
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
inline
|
|
HWND ConvertToFullHWND(HWND hwnd)
|
|
{
|
|
if (IsWOWThreadCallable() &&
|
|
((((ULONG)hwnd & 0xFFFF0000) == 0) ||
|
|
(((ULONG)hwnd & 0xFFFF0000) == 0xFFFF0000)))
|
|
{
|
|
return(g_pOleThunkWOW->ConvertHwndToFullHwnd(hwnd));
|
|
}
|
|
return(hwnd);
|
|
}
|
|
|
|
inline
|
|
void OleDdeDeleteMetaFile(HANDLE hmf)
|
|
{
|
|
intrDebugOut((DEB_ITRACE,
|
|
"OleDdeDeleteMetaFile(%x)\n",
|
|
hmf));
|
|
if (IsWOWThreadCallable())
|
|
{
|
|
intrDebugOut((DEB_ITRACE,
|
|
"InWow: calling WOWFreeMetafile(%x)\n",
|
|
hmf));
|
|
|
|
if (!g_pOleThunkWOW->FreeMetaFile(hmf))
|
|
{
|
|
return;
|
|
}
|
|
intrDebugOut((DEB_ITRACE,
|
|
"WOWFreeMetafile(%x) FAILED\n",
|
|
hmf));
|
|
}
|
|
intrDebugOut((DEB_ITRACE,
|
|
"Calling DeleteMetaFile(%x)\n",
|
|
hmf));
|
|
|
|
DeleteMetaFile((HMETAFILE)hmf);
|
|
}
|