185 lines
4.9 KiB
C
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_
|