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

185 lines
4.9 KiB
C++

// File: dbgmenu.h
#ifndef _DBGMENU_H_
#define _DBGMENU_H_
const int IDM_DEBUG = 50000; // debug menu ID
const int IDM_DEBUG_FIRST = 50001; // start of menu item range
const int IDM_DEBUG_LAST = 50099; // end of menu item range
#define AS_DEBUG_KEY "Software\\Microsoft\\Conferencing\\AppSharing\\Debug"
#define REGVAL_AS_HATCHSCREENDATA "HatchScreenData"
#define REGVAL_AS_HATCHBMPORDERS "HatchBitmapOrders"
#define REGVAL_AS_COMPRESSION "GDCCompression"
#define REGVAL_AS_VIEWSELF "ViewOwnSharedStuff"
#define REGVAL_AS_NOFLOWCONTROL "NoFlowControl"
#define REGVAL_OM_NOCOMPRESSION "NoOMCompression"
// Base debug option classe
class CDebugOption
{
public:
int m_bst; // Current Button State (BST_CHECKED, BST_UNCHECKED, BST_INDETERMINATE)
PTSTR m_psz; // Text to display
CDebugOption();
~CDebugOption();
CDebugOption(PTSTR psz, int bst = BST_INDETERMINATE);
virtual void Update(void);
};
// Option checkbox data for modifying a memory flag
class DBGOPTPDW : public CDebugOption
{
public:
DWORD m_dwMask; // bit to flip
DWORD * m_pdw; // pointer to data
DBGOPTPDW(PTSTR psz, DWORD dwMask, DWORD * pdw);
DBGOPTPDW();
void Update(void);
};
// Option checkbox data for modifying a registry entry
class DBGOPTREG : public CDebugOption
{
public:
DWORD m_dwMask; // bit to flip
DWORD m_dwDefault; // default value
HKEY m_hkey; // key
PTSTR m_pszSubKey; // subkey
PTSTR m_pszEntry; // entry
DBGOPTREG(PTSTR psz,
DWORD dwMask,
DWORD dwDefault,
PTSTR pszEntry,
PTSTR pszSubKey = CONFERENCING_KEY,
HKEY hkey = HKEY_CURRENT_USER);
~DBGOPTREG();
void Update(void);
};
// Option checkbox data used explicitly for maintaining compression data.
// Because of the use of static variables, this subclass should not be used
// for any other purpose.
class DBGOPTCOMPRESS : public CDebugOption
{
public:
static DWORD m_dwCompression; // actual compression value
static int m_total; // total number of instances of this subclass
static int m_count; // internally used counter
static DWORD m_dwDefault; // default value
static HKEY m_hkey; // key
static PTSTR m_pszSubKey; // subkey
static PTSTR m_pszEntry; // entry
BOOL m_bCheckedOn; // if true, a checked option turns a bit on;
// otherwise, it turns a bit off
DWORD m_dwMask; // which bits in m_dwCompression to change
DBGOPTCOMPRESS(PTSTR psz,
DWORD dwMask,
BOOL bCheckedOn);
~DBGOPTCOMPRESS();
void Update(void);
};
class CDebugMenu
{
public:
HWND m_hwnd;
HMENU m_hMenu;
HMENU m_hMenuDebug;
HWND m_hwndDbgopt;
CDebugMenu(VOID);
// ~CDebugMenu(VOID);
VOID InitDebugMenu(HWND hwnd);
BOOL OnDebugCommand(WPARAM wCmd);
// Member Info Menu Item
VOID DbgMemberInfo(VOID);
VOID InitMemberDlg(HWND);
VOID FillMemberList(HWND);
VOID ShowMemberInfo(HWND, CParticipant *);
static INT_PTR CALLBACK DbgListDlgProc(HWND, UINT, WPARAM, LPARAM);
// Version Menu Item
VOID DbgVersion(VOID);
BOOL DlgVersionMsg(HWND, UINT, WPARAM, LPARAM);
static INT_PTR CALLBACK DbgVersionDlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL InitVerDlg(HWND);
BOOL FillVerList(HWND);
VOID ShowVerInfo(HWND, LPSTR *, int);
// Debug Options Menu Item
VOID DbgOptions(VOID);
BOOL DlgOptionsMsg(HWND, UINT, WPARAM, LPARAM);
static INT_PTR CALLBACK DbgOptionsDlgProc(HWND, UINT, WPARAM, LPARAM);
VOID InitOptionsData(HWND);
VOID AddDbgOptions(LV_ITEM *);
VOID AddASOptions(LV_ITEM *);
// Debug Zones Menu Item
VOID DbgChangeZones(VOID);
VOID AddZones(LV_ITEM *);
VOID InitZonesData(HWND);
VOID SaveZonesData(VOID);
BOOL DlgZonesMsg(HWND, UINT, WPARAM, LPARAM);
static INT_PTR CALLBACK DbgZonesDlgProc(HWND, UINT, WPARAM, LPARAM);
// System Policy Menu Item
VOID DbgSysPolicy(VOID);
VOID InitPolicyData(HWND hDlg);
VOID AddPolicyOptions(LV_ITEM *);
BOOL DlgPolicyMsg(HWND, UINT, WPARAM, LPARAM);
static INT_PTR CALLBACK DbgPolicyDlgProc(HWND, UINT, WPARAM, LPARAM);
// User Interface Menu Item
VOID DbgUI(VOID);
VOID InitUIData(HWND hDlg);
VOID AddUIOptions(LV_ITEM *);
static INT_PTR CALLBACK DbgUIDlgProc(HWND, UINT, WPARAM, LPARAM);
// General Dialog-Checkbox functions
BOOL InitOptionsDlg(HWND);
BOOL SaveOptionsData(HWND);
VOID FreeOptionsData(HWND);
VOID ToggleOption(LV_ITEM *);
VOID OnNotifyDbgopt(LPARAM);
VOID AddOption(LV_ITEM * plvItem, CDebugOption * pDbgOpt);
VOID AddOptionPdw(LV_ITEM * plvItem, PTSTR psz, DWORD dwMask, DWORD * pdw);
VOID AddOptionReg(LV_ITEM * plvItem, PTSTR psz, DWORD dwMask, DWORD dwDefault,
PTSTR pszEntry, PTSTR pszSubKey, HKEY hkey);
VOID CDebugMenu::AddOptionCompress(LV_ITEM * plvItem, PTSTR psz, DWORD dwMask, BOOL bCheckedOn);
VOID AddOptionSection(LV_ITEM* plvItem, PTSTR psz);
};
// Global Interface
#ifdef DEBUG
VOID InitDbgMenu(HWND hwnd);
VOID FreeDbgMenu(void);
BOOL OnDebugCommand(WPARAM wCmd);
#else
#define InitDbgMenu(hwnd)
#define FreeDbgMenu()
#endif
#endif // _DBGMENU_H_