255 lines
5.1 KiB
C
255 lines
5.1 KiB
C
|
//
|
||
|
// Hosting (local or remote)
|
||
|
//
|
||
|
|
||
|
#ifndef _H_HET
|
||
|
#define _H_HET
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// DC-Share includes
|
||
|
//
|
||
|
#include <osi.h>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
BOOL HET_Init(void);
|
||
|
void HET_Term(void);
|
||
|
|
||
|
|
||
|
#if defined(DLL_CORE)
|
||
|
|
||
|
|
||
|
typedef struct tagGUIEFFECTS
|
||
|
{
|
||
|
BOOL hetAdvanced;
|
||
|
BOOL hetCursorShadow;
|
||
|
ANIMATIONINFO hetAnimation;
|
||
|
}
|
||
|
GUIEFFECTS;
|
||
|
|
||
|
void HET_SetGUIEffects(BOOL fOn, GUIEFFECTS * pEffects);
|
||
|
|
||
|
|
||
|
#endif // DLL_CORE or DLL_HOOK
|
||
|
|
||
|
|
||
|
//
|
||
|
// Define escape codes
|
||
|
//
|
||
|
|
||
|
// These are normal
|
||
|
enum
|
||
|
{
|
||
|
// These are normal
|
||
|
HET_ESC_SHARE_DESKTOP = OSI_HET_ESC_FIRST,
|
||
|
HET_ESC_UNSHARE_DESKTOP,
|
||
|
HET_ESC_VIEWER
|
||
|
};
|
||
|
|
||
|
|
||
|
// These are WNDOBJ_SETUP
|
||
|
enum
|
||
|
{
|
||
|
HET_ESC_SHARE_WINDOW = OSI_HET_WO_ESC_FIRST,
|
||
|
HET_ESC_UNSHARE_WINDOW,
|
||
|
HET_ESC_UNSHARE_ALL
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Structure passed with a HET_ESC_SHARE_WINDOW request
|
||
|
//
|
||
|
typedef struct tagHET_SHARE_WINDOW
|
||
|
{
|
||
|
OSI_ESCAPE_HEADER header;
|
||
|
DWORD winID; // window to share
|
||
|
DWORD result; // Return code from HET_DDShareWindow
|
||
|
}
|
||
|
HET_SHARE_WINDOW;
|
||
|
typedef HET_SHARE_WINDOW FAR * LPHET_SHARE_WINDOW;
|
||
|
|
||
|
//
|
||
|
// Structure passed with a HET_ESC_UNSHARE_WINDOW request
|
||
|
//
|
||
|
typedef struct tagHET_UNSHARE_WINDOW
|
||
|
{
|
||
|
OSI_ESCAPE_HEADER header;
|
||
|
DWORD winID; // window to unshare
|
||
|
}
|
||
|
HET_UNSHARE_WINDOW;
|
||
|
typedef HET_UNSHARE_WINDOW FAR * LPHET_UNSHARE_WINDOW;
|
||
|
|
||
|
//
|
||
|
// Structure passed with a HET_ESC_UNSHARE_ALL request
|
||
|
//
|
||
|
typedef struct tagHET_UNSHARE_ALL
|
||
|
{
|
||
|
OSI_ESCAPE_HEADER header;
|
||
|
}
|
||
|
HET_UNSHARE_ALL;
|
||
|
typedef HET_UNSHARE_ALL FAR * LPHET_UNSHARE_ALL;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Structure passed with HET_ESC_SHARE_DESKTOP
|
||
|
//
|
||
|
typedef struct tagHET_SHARE_DESKTOP
|
||
|
{
|
||
|
OSI_ESCAPE_HEADER header;
|
||
|
}
|
||
|
HET_SHARE_DESKTOP;
|
||
|
typedef HET_SHARE_DESKTOP FAR * LPHET_SHARE_DESKTOP;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Structure passed with HET_ESC_UNSHARE_DESKTOP
|
||
|
//
|
||
|
typedef struct tagHET_UNSHARE_DESKTOP
|
||
|
{
|
||
|
OSI_ESCAPE_HEADER header;
|
||
|
}
|
||
|
HET_UNSHARE_DESKTOP;
|
||
|
typedef HET_UNSHARE_DESKTOP FAR * LPHET_UNSHARE_DESKTOP;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Structure passed with HET_ESC_VIEWER
|
||
|
//
|
||
|
typedef struct tagHET_VIEWER
|
||
|
{
|
||
|
OSI_ESCAPE_HEADER header;
|
||
|
LONG viewersPresent;
|
||
|
}
|
||
|
HET_VIEWER;
|
||
|
typedef HET_VIEWER FAR * LPHET_VIEWER;
|
||
|
|
||
|
|
||
|
|
||
|
#ifdef DLL_DISP
|
||
|
|
||
|
#ifndef IS_16
|
||
|
//
|
||
|
// Number of rectangles allocated per window structure. If a visible
|
||
|
// region exceeds that number, we will merge rects together and end up
|
||
|
// trapping a bit more output than necessary.
|
||
|
//
|
||
|
#define HET_WINDOW_RECTS 10
|
||
|
|
||
|
|
||
|
//
|
||
|
// HET's version of ENUMRECTS. This is the same as Windows', except that
|
||
|
// it has HET_WINDOW_RECTS rectangles, not 1
|
||
|
//
|
||
|
typedef struct tagHET_ENUM_RECTS
|
||
|
{
|
||
|
ULONG c; // count of rectangles in use
|
||
|
RECTL arcl[HET_WINDOW_RECTS]; // rectangles
|
||
|
} HET_ENUM_RECTS;
|
||
|
typedef HET_ENUM_RECTS FAR * LPHET_ENUM_RECTS;
|
||
|
|
||
|
//
|
||
|
// The Window Structure kept for each tracked window
|
||
|
//
|
||
|
typedef struct tagHET_WINDOW_STRUCT
|
||
|
{
|
||
|
BASEDLIST chain; // list chaining info
|
||
|
HWND hwnd; // hwnd of this window
|
||
|
WNDOBJ * wndobj; // WNDOBJ for this window
|
||
|
HET_ENUM_RECTS rects; // rectangles
|
||
|
} HET_WINDOW_STRUCT;
|
||
|
typedef HET_WINDOW_STRUCT FAR * LPHET_WINDOW_STRUCT;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Initial number of windows for which space is allocated
|
||
|
// We alloc about 1 page for each block of windows. Need to account for
|
||
|
// the BASEDLIST at the front of HET_WINDOW_MEMORY.
|
||
|
//
|
||
|
#define HET_WINDOW_COUNT ((0x1000 - sizeof(BASEDLIST)) / sizeof(HET_WINDOW_STRUCT))
|
||
|
|
||
|
|
||
|
//
|
||
|
// Layout of memory ued to hold window structures
|
||
|
//
|
||
|
typedef struct tagHET_WINDOW_MEMORY
|
||
|
{
|
||
|
BASEDLIST chain;
|
||
|
HET_WINDOW_STRUCT wnd[HET_WINDOW_COUNT];
|
||
|
} HET_WINDOW_MEMORY;
|
||
|
typedef HET_WINDOW_MEMORY FAR * LPHET_WINDOW_MEMORY;
|
||
|
|
||
|
#endif // !IS_16
|
||
|
|
||
|
|
||
|
|
||
|
#ifdef IS_16
|
||
|
|
||
|
void HETDDViewing(BOOL fViewers);
|
||
|
|
||
|
#else
|
||
|
|
||
|
void HETDDViewing(SURFOBJ *pso, BOOL fViewers);
|
||
|
|
||
|
BOOL HETDDShareWindow(SURFOBJ *pso, LPHET_SHARE_WINDOW pReq);
|
||
|
void HETDDUnshareWindow(LPHET_UNSHARE_WINDOW pReq);
|
||
|
void HETDDUnshareAll(void);
|
||
|
|
||
|
BOOL HETDDAllocWndMem(void);
|
||
|
void HETDDDeleteAndFreeWnd(LPHET_WINDOW_STRUCT pWnd);
|
||
|
|
||
|
VOID CALLBACK HETDDVisRgnCallback(WNDOBJ *pwo, FLONG fl);
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif // DLL_DISP
|
||
|
|
||
|
|
||
|
#ifdef DLL_DISP
|
||
|
|
||
|
//
|
||
|
// INIT, TERM. TERM is used to free the window list blocks when NetMeeting
|
||
|
// shuts down. Otherwise that memory will stay allocated in the display
|
||
|
// driver forever.
|
||
|
//
|
||
|
|
||
|
void HET_DDTerm(void);
|
||
|
|
||
|
|
||
|
//
|
||
|
//
|
||
|
// Name: HET_DDProcessRequest
|
||
|
//
|
||
|
// Description: Handle a DrvEscape request for HET
|
||
|
//
|
||
|
// Params: pso - pointer to a SURFOBJ
|
||
|
// cjIn - size of input buffer
|
||
|
// pvIn - input buffer
|
||
|
// cjOut - size of output buffer
|
||
|
// pvOut - output buffer
|
||
|
//
|
||
|
//
|
||
|
#ifdef IS_16
|
||
|
|
||
|
BOOL HET_DDProcessRequest(UINT fnEscape, LPOSI_ESCAPE_HEADER pResult,
|
||
|
DWORD cbResult);
|
||
|
|
||
|
#else
|
||
|
|
||
|
ULONG HET_DDProcessRequest(SURFOBJ *pso,
|
||
|
UINT cjIn,
|
||
|
void * pvIn,
|
||
|
UINT cjOut,
|
||
|
void * pvOut);
|
||
|
#endif // IS_16
|
||
|
|
||
|
|
||
|
#endif // DLL_DISP
|
||
|
|
||
|
|
||
|
|
||
|
#endif // _H_HET
|