windows-nt/Source/XPSP1/NT/enduser/netmeeting/as/h/swl.h
2020-09-26 16:20:57 +08:00

152 lines
3.9 KiB
C++

//
// Shared Window List
//
#ifndef _H_SWL
#define _H_SWL
//
// Max # of entries we can send in SWL packet; backwards compat thing.
// Also, we keep a bunch of static arrays around so we know if stuff has
// changed.
//
#define SWL_MAX_WINDOWS 100
//
// Return codes.
//
#define SWL_RC_ERROR 0
#define SWL_RC_SENT 1
#define SWL_RC_NOT_SENT 2
//
// CONSTANTS
//
//
// Window property flags
//
#define SWL_PROP_INVALID 0x00000000
#define SWL_PROP_COUNTDOWN_MASK 0x00000003
#define SWL_PROP_INITIAL 0x00000004
#define SWL_PROP_TAGGABLE 0x00000020
#define SWL_PROP_TASKBAR 0x00000040
#define SWL_PROP_SHADOW 0x00000100
#define SWL_PROP_IGNORE 0x00000200
#define SWL_PROP_HOSTED 0x00000400
#define SWL_PROP_TRANSPARENT 0x00000800
#define SWL_PROP_SAVEBITS 0x00001000
//
// We still need this SWL token stuff for backwards compatibility (<= NM 2.1)
// Those systems treat the shared apps from all the different participants
// in a global fashion.
//
// Even so, back level systems may not be able to keep up if a lot of NM 3.0
// systems are sharing--but that happens even among an all 2.1 conference.
// With collisions, zordering, etc. a sharer may back off or drop packets.
//
#define SWL_SAME_ZORDER_INC 1
#define SWL_NEW_ZORDER_INC 2
#define SWL_NEW_ZORDER_ACTIVE_INC 3
#define SWL_NEW_ZORDER_FAKE_WINDOW_INC 4
#define SWL_EXIT_INC 5
#define SWL_MAKE_TOKEN(index, inc) (TSHR_UINT16)(((index) << 4) | (inc))
#define SWL_GET_INDEX(token) ((token) >> 4)
#define SWL_MAX_TOKEN_INDEX 0x0FFF
#define SWL_GET_INCREMENT(token) ((token) & 0x000F)
//
// This is the number of times we must consecutively see a window as
// invisible before we believe it is - see comments in aswlint.c explaining
// why we must do this.
//
#define SWL_BELIEVE_INVISIBLE_COUNT 2
//
// Name of the SWL Global Atom
//
#define SWL_ATOM_NAME "AS_StateInfo"
//
// For each sharer in the conference, we remember the last shared list
// they sent us--the HWNDs (on their machine, no meaning on ours), the
// state information, and the position.
//
// We use this for several purposes:
// (1) 2.x compatibility
// 2.x sharers, when they send SWL lists, do not fill in the position
// of shadows representing other remote app windows. Those will appear
// in the list if they obscure parts of shared windows on the 2.x host. The
// old 2.x code would look up the last position info in the global shared
// list, and use that. We need the position info to accurately compute
// the obscured regions for a particular host. 3.0 sharers don't have
// shadows, they never send incomplete info.
//
// (2) For better UI in the host view
// We can remember where the window on top is, where the active window
// is (if a 3.0 host), if a window is minimized, etc. Since we don't have
// independent fake windows floating with tray buttons you can manipulate
// on a remote to manipulate the host, minimized windows will disappear.
// Only Alt-Tabbing (when controlling) can activate and restore them.
//
//
// DESKTOP types
//
enum
{
DESKTOP_OURS = 0,
DESKTOP_WINLOGON,
DESKTOP_SCREENSAVER,
DESKTOP_OTHER
};
#define NAME_DESKTOP_WINLOGON "Winlogon"
#define NAME_DESKTOP_SCREENSAVER "Screen-saver"
#define NAME_DESKTOP_DEFAULT "Default"
#define SWL_DESKTOPNAME_MAX 64
#ifdef __cplusplus
// Things we need for enumeration of top level windows
typedef struct tagSWLENUMSTRUCT
{
class ASHost * pHost;
BOOL fBailOut;
UINT transparentCount;
UINT count;
LPSTR newWinNames;
PSWLWINATTRIBUTES newFullWinStruct;
}
SWLENUMSTRUCT, * PSWLENUMSTRUCT;
#endif // __cplusplus
BOOL CALLBACK SWLDestroyWindowProperty(HWND, LPARAM);
BOOL CALLBACK SWLEnumProc(HWND hwnd, LPARAM lParam);
#endif // _H_SWL