|
|
// 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_
|