mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.2 KiB
127 lines
3.2 KiB
// File: CplMain.cpp
|
|
|
|
#include "precomp.h"
|
|
#include "resource.h"
|
|
#include "Conf.h"
|
|
#include "ConfCpl.h"
|
|
#include "confwnd.h"
|
|
#include "ConfPolicies.h"
|
|
|
|
//*** Global Data *****************************************************
|
|
|
|
// Global flag keeps setting that changed for windows msg broadcast
|
|
DWORD g_dwChangedSettings = 0;
|
|
|
|
BOOL g_fInOptionsDialog = FALSE;
|
|
|
|
static const int nMaxPropPages = 7;
|
|
|
|
INT_PTR CreatePropSheet(HWND hwndOwner, HINSTANCE hInst, int nStartPage)
|
|
{
|
|
int pageMap[nMaxPropPages];
|
|
ZeroMemory(&pageMap, sizeof(pageMap));
|
|
|
|
PROPSHEETPAGE psp[nMaxPropPages];
|
|
ZeroMemory(&psp, sizeof(psp));
|
|
|
|
RegEntry rePol(POLICIES_KEY, HKEY_CURRENT_USER);
|
|
RegEntry reAudio(AUDIO_KEY, HKEY_CURRENT_USER);
|
|
|
|
ASSERT(nStartPage < nMaxPropPages);
|
|
|
|
int nPages = 0;
|
|
|
|
if (!rePol.GetNumber( REGVAL_POL_NO_GENERALPAGE,
|
|
DEFAULT_POL_NO_GENERALPAGE ))
|
|
{
|
|
pageMap[OPTIONS_GENERAL_PAGE] = nPages;
|
|
FillInPropertyPage(&psp[nPages++], IDD_OPT_GENERAL,
|
|
UserDlgProc);
|
|
ASSERT(nPages <= nMaxPropPages);
|
|
}
|
|
if (!rePol.GetNumber( REGVAL_POL_NO_SECURITYPAGE,
|
|
DEFAULT_POL_NO_SECURITYPAGE ))
|
|
{
|
|
pageMap[OPTIONS_SECURITY_PAGE] = nPages;
|
|
FillInPropertyPage(&psp[nPages++], IDD_SECURITY,
|
|
SecurityDlgProc);
|
|
ASSERT(nPages <= nMaxPropPages);
|
|
|
|
}
|
|
if (!rePol.GetNumber( REGVAL_POL_NO_AUDIOPAGE,
|
|
DEFAULT_POL_NO_AUDIOPAGE ) &&
|
|
!rePol.GetNumber( REGVAL_POL_NO_AUDIO,
|
|
DEFAULT_POL_NO_AUDIO) &&
|
|
ISSOUNDCARDPRESENT(reAudio.GetNumber( REGVAL_SOUNDCARDCAPS,
|
|
SOUNDCARD_NONE)) )
|
|
{
|
|
pageMap[OPTIONS_AUDIO_PAGE] = nPages;
|
|
FillInPropertyPage(&psp[nPages++], IDD_AUDIO,
|
|
AudioDlgProc);
|
|
ASSERT(nPages <= nMaxPropPages);
|
|
}
|
|
if (!rePol.GetNumber( REGVAL_POL_NO_VIDEOPAGE,
|
|
DEFAULT_POL_NO_VIDEOPAGE ) &&
|
|
(!rePol.GetNumber( REGVAL_POL_NO_VIDEO_SEND,
|
|
DEFAULT_POL_NO_VIDEO_SEND) ||
|
|
!rePol.GetNumber( REGVAL_POL_NO_VIDEO_RECEIVE,
|
|
DEFAULT_POL_NO_VIDEO_RECEIVE)))
|
|
{
|
|
pageMap[OPTIONS_VIDEO_PAGE] = nPages;
|
|
FillInPropertyPage(&psp[nPages++], IDD_VIDEO,
|
|
VideoDlgProc);
|
|
ASSERT(nPages <= nMaxPropPages);
|
|
}
|
|
|
|
// If no pages are allowed, tell the user and get out
|
|
if ( !nPages ) {
|
|
ConfMsgBox ( hwndOwner, (LPCTSTR)IDS_ALLPAGESDISABLED );
|
|
return 0;
|
|
}
|
|
|
|
PROPSHEETHEADER psh;
|
|
InitStruct(&psh);
|
|
|
|
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW;
|
|
psh.hwndParent = hwndOwner;
|
|
psh.hInstance = hInst;
|
|
ASSERT(NULL == psh.hIcon);
|
|
psh.pszCaption = (LPSTR)IDS_CPLNAME;
|
|
psh.nPages = nPages;
|
|
psh.nStartPage = pageMap[nStartPage];
|
|
psh.ppsp = (LPCPROPSHEETPAGE) &psp;
|
|
|
|
return (PropertySheet(&psh));
|
|
}
|
|
|
|
|
|
/* L A U N C H C O N F C P L */
|
|
/*-------------------------------------------------------------------------
|
|
%%Function: LaunchConfCpl
|
|
|
|
-------------------------------------------------------------------------*/
|
|
VOID LaunchConfCpl(HWND hwnd, int nStartPage)
|
|
{
|
|
|
|
if (g_fInOptionsDialog)
|
|
{
|
|
return;
|
|
}
|
|
|
|
g_fInOptionsDialog = TRUE;
|
|
CreatePropSheet(hwnd, GetInstanceHandle(), nStartPage);
|
|
g_fInOptionsDialog = FALSE;
|
|
|
|
// Broadcast change notification if anything changed
|
|
if (g_dwChangedSettings)
|
|
{
|
|
HandleConfSettingsChange(g_dwChangedSettings);
|
|
g_dwChangedSettings = 0;
|
|
}
|
|
}
|
|
|
|
BOOL CanLaunchConfCpl()
|
|
{
|
|
return !g_fInOptionsDialog;
|
|
}
|
|
|