windows-nt/Source/XPSP1/NT/net/rras/cm/cmdial/dialogs.h
2020-09-26 16:20:57 +08:00

480 lines
14 KiB
C++

//+----------------------------------------------------------------------------
//
// File: dialogs.h
//
// Module: CMDIAL32.DLL
//
// Synopsis: This header contains definitions for the dialog UI code.
//
// Copyright (c) 1996-1999 Microsoft Corporation
//
// Author: quintinb Created Header 08/17/99
//
//+----------------------------------------------------------------------------
#include "cm_misc.h"
#include "ModalDlg.h"
//+---------------------------------------------------------------------------
//
// class CInetSignInDlg
//
// Description: The standalone "Internet Sign-In" dlg
//
// History: fengsun Created 10/30/97
//
//----------------------------------------------------------------------------
class CInetSignInDlg : public CModalDlg
{
public:
CInetSignInDlg(ArgsStruct * pArgs);
virtual void OnOK();
virtual BOOL OnInitDialog();
virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam );
protected:
ArgsStruct *m_pArgs; // pointer to the huge structure
static const DWORD m_dwHelp[]; // help id pairs
};
inline CInetSignInDlg::CInetSignInDlg(ArgsStruct * pArgs) : CModalDlg(m_dwHelp, pArgs->pszHelpFile)
{
MYDBGASSERT(pArgs);
m_pArgs = pArgs;
}
//+---------------------------------------------------------------------------
//
// class CPropertiesPage
//
// Description: A general properties property page class
//
// History: fengsun Created 10/30/97
//
//----------------------------------------------------------------------------
class CPropertiesPage : public CWindowWithHelp
{
friend class CPropertiesSheet;
public:
CPropertiesPage(UINT nIDTemplate, const DWORD* pHelpPairs = NULL,
const TCHAR* lpszHelpFile = NULL);
CPropertiesPage(LPCTSTR lpszTemplateName, const DWORD* pHelpPairs = NULL,
const TCHAR* lpszHelpFile = NULL);
virtual BOOL OnInitDialog(); // WM_INITDIALOG
virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam ); // WM_COMMAND
virtual BOOL OnSetActive(); // PSN_SETACTIVE
virtual BOOL OnKillActive(); // PSN_KILLACTIVE
virtual void OnApply(); // PSN_APPLY
virtual void OnReset(); // PSN_RESET
// If the derived class need to overwrite thses help function, make this virtual
void OnPsnHelp(HWND hwndFrom, UINT_PTR idFrom); // PSN_HELP
virtual DWORD OnOtherMessage(UINT uMsg, WPARAM wParam, LPARAM lParam );
protected:
LPCTSTR m_pszTemplate; // the resource ID
protected:
void SetPropSheetResult(DWORD dwResult);
static INT_PTR CALLBACK PropPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam, LPARAM lParam);
};
//+---------------------------------------------------------------------------
//
// class CPropertiesSheet
//
// Description: The properties property page class
//
// History: fengsun Created 10/30/97
//
//----------------------------------------------------------------------------
class CPropertiesSheet
{
public:
CPropertiesSheet(ArgsStruct *pArgs);
void AddPage(const CPropertiesPage* pPage);
void AddExternalPage(PROPSHEETPAGE *pPsp);
BOOL HasPage(const CPropertiesPage* pPage) const;
int DoPropertySheet(HWND hWndParent, LPTSTR pszCaption, HINSTANCE hInst);
protected:
enum {MAX_PAGES = 6};
enum {CPROP_SHEET_TYPE_INTERNAL = 0,
CPROP_SHEET_TYPE_EXTERNAL = 1};
PROPSHEETHEADER m_psh; // propertysheet header
PROPSHEETPAGE m_pages[MAX_PAGES]; // property pages array
DWORD m_adwPageType[MAX_PAGES]; // property page type
UINT m_numPages; // number of property pages
ArgsStruct *m_pArgs;
public:
TCHAR* m_lpszServiceName; // the profile name, used as the mutex name for OK
protected:
static LRESULT CALLBACK SubClassPropSheetProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam);
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam);
static WNDPROC m_pfnOrgPropSheetProc; // Original propertysheet wnd proc before subclass
// pointer to the property sheet which can be accessed by static function.
// Not works quite safe, if there are multiple instance of CPropertySheet.
// Should be protected by CriticalSection.
static CPropertiesSheet* m_pThis;
};
//
// Inline functions
//
inline CPropertiesSheet::CPropertiesSheet(ArgsStruct *pArgs)
{
m_pArgs = pArgs;
MYDBGASSERT(m_pArgs);
m_numPages = 0;
ZeroMemory((LPVOID)m_adwPageType, sizeof(m_adwPageType));
}
inline void CPropertiesPage::SetPropSheetResult(DWORD dwResult)
{
SetWindowLongU(m_hWnd, DWLP_MSGRESULT, (LONG_PTR)dwResult);
}
class CInetPage;
//+---------------------------------------------------------------------------
//
// class CGeneralPage
//
// Description: A dialing property page class
//
// History: fengsun Created 10/30/97
//
//----------------------------------------------------------------------------
class CGeneralPage :public CPropertiesPage
{
public:
CGeneralPage(ArgsStruct* pArgs, UINT nIDTemplate);
void SetEventListener(CInetPage* pEventListener) {m_pEventListener = pEventListener;}
protected:
virtual BOOL OnInitDialog();
virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam );
virtual void OnApply();
virtual BOOL OnKillActive(); // PSN_KILLACTIVE
void OnDialingProperties();
void OnPhoneBookButton(UINT nPhoneIdx);
BOOL DisplayMungedPhone(UINT uiPhoneIdx);
BOOL CheckTapi(TapiLinkageStruct *ptlsTapiLink, HINSTANCE hInst);
DWORD InitDialInfo();
void EnableDialupControls(BOOL fEnable);
void ClearUseDialingRules(int iPhoneNdx);
void UpdateDialingRulesButton(void);
void UpdateNumberDescription(int nPhoneIdx, LPCTSTR pszDesc);
//
// Access Points
//
void UpdateForNewAccessPoint(BOOL fSetPhoneNumberDescriptions);
BOOL AccessPointInfoChanged();
void DeleteAccessPoint();
void AddNewAPToReg(LPTSTR pszNewAPName, BOOL fRefreshUiWwithCurrentValues);
virtual DWORD OnOtherMessage(UINT uMsg, WPARAM wParam, LPARAM lParam );
enum {WM_INITDIALINFO = WM_USER+1}; // message posted to itself to load dial info
protected:
ArgsStruct* m_pArgs; // pointer to the huge structure
PHONEINFO m_DialInfo[MAX_PHONE_NUMBERS]; // local copy of dial info,
UINT m_NumPhones; // Number of phone # to display (1 for connectoid dialing)
TCHAR m_szDeviceName[RAS_MaxDeviceName+1]; // modem device name
TCHAR m_szDeviceType[RAS_MaxDeviceName+1]; // device type
CInetPage* m_pEventListener; // the object to receive event on this page
BOOL m_bDialInfoInit; // whether we have loaded dialing information
static const DWORD m_dwHelp[]; // help id pairs
BOOL m_bAPInfoChanged; // whether Access point information has changed
protected:
static LRESULT CALLBACK SubClassEditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static WNDPROC m_pfnOrgEditWndProc; // the original phone # edit window proc for subclassing
};
//+---------------------------------------------------------------------------
//
// class CInetPage
//
// Description: The internet sign-on property page class
//
// History: fengsun Created 10/30/97
//
//----------------------------------------------------------------------------
class CInetPage :public CPropertiesPage
{
public:
CInetPage(ArgsStruct* pArgs, UINT nIDTemplate);
void OnGeneralPageKillActive(BOOL fDirect);
//
// The following functions are shared with CInetSignInDlg,
// For simplicity, we makes them static member function of class CInetPage
// instead of having another class
//
static void OnInetInit(HWND hwndDlg, ArgsStruct *pArgs);
static void OnInetOk(HWND hwndDlg, ArgsStruct *pArgs);
static void AdjustSavePasswordCheckBox(HWND hwndCheckBox, BOOL fEmptyPassword,
BOOL fDialAutomatically, BOOL fPasswordOptional);
protected:
virtual BOOL OnInitDialog();
virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam );
virtual void OnApply();
virtual BOOL OnSetActive(); // PSN_SETACTIVE
protected:
ArgsStruct* m_pArgs;// pointer to the huge structure
BOOL m_fDirect; // the current connection type selection in General page
BOOL m_fPasswordOptional; // whether the PasswordOptional flag is set in
// the profile
static const DWORD m_dwHelp[]; // help id pairs
};
//+---------------------------------------------------------------------------
//
// class COptionPage
//
// Description: The options property page class
//
// History: fengsun Created 10/30/97
//
//----------------------------------------------------------------------------
class COptionPage :public CPropertiesPage
{
public:
COptionPage(ArgsStruct* pArgs, UINT nIDTemplate);
protected:
virtual BOOL OnInitDialog();
virtual DWORD OnCommand(WPARAM wParam, LPARAM lParam ); // WM_COMMAND
virtual void OnApply();
void InitIdleTimeList(HWND hwndList, DWORD dwMinutes);
DWORD GetIdleTimeList(HWND hwndList);
BOOL ToggleLogging();
protected:
ArgsStruct* m_pArgs; // pointer to the huge structure
BOOL m_fEnableLog; // is logging enabled
static const DWORD m_dwHelp[]; // help id pairs
static const DWORD m_adwTimeConst[]; // = {0,1, 5, 10, 30, 1*60, 2*60, 4*60, 24*60};
static const int m_nTimeConstElements;// = sizeof(adwTimeConst)/sizeof(adwTimeConst[0]);
};
//+---------------------------------------------------------------------------
//
// class CVpnPage
//
// Description: The VPN property page class
//
// History: quintinb Created 10/26/00
//
//----------------------------------------------------------------------------
class CVpnPage :public CPropertiesPage
{
public:
CVpnPage(ArgsStruct* pArgs, UINT nIDTemplate);
protected:
virtual BOOL OnInitDialog();
virtual void OnApply();
protected:
ArgsStruct* m_pArgs; // pointer to the huge structure
static const DWORD m_dwHelp[]; // help id pairs
};
//+---------------------------------------------------------------------------
//
// class CAboutPage
//
// Description: The about property page class
//
// History: fengsun Created 10/30/97
//
//----------------------------------------------------------------------------
class CAboutPage :public CPropertiesPage
{
public:
CAboutPage(ArgsStruct* pArgs, UINT nIDTemplate);
protected:
virtual BOOL OnInitDialog();
virtual BOOL OnSetActive();
virtual BOOL OnKillActive();
virtual void OnApply();
virtual void OnReset();
virtual DWORD OnOtherMessage(UINT uMsg, WPARAM wParam, LPARAM lParam );
protected:
ArgsStruct *m_pArgs; // pointer to the huge structure
};
//+---------------------------------------------------------------------------
//
// class CChangePasswordDlg
//
// Description: The network change password dlg
//
// History: v-vijayb Created 7/3/99
//
//----------------------------------------------------------------------------
class CChangePasswordDlg : public CModalDlg
{
public:
CChangePasswordDlg(ArgsStruct *pArgs);
virtual void OnOK();
virtual void OnCancel();
virtual BOOL OnInitDialog();
virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam );
protected:
ArgsStruct *m_pArgs;
};
inline CChangePasswordDlg::CChangePasswordDlg(ArgsStruct *pArgs) : CModalDlg()
{
MYDBGASSERT(pArgs);
m_pArgs = pArgs;
}
//+---------------------------------------------------------------------------
//
// class CCallbackNumberDlg
//
// Description: Emulation of the RAS Callback Number dialog
//
// History: nickball Created 3/1/00
//
//----------------------------------------------------------------------------
class CCallbackNumberDlg : public CModalDlg
{
public:
CCallbackNumberDlg(ArgsStruct *pArgs);
virtual void OnOK();
virtual void OnCancel();
virtual BOOL OnInitDialog();
virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam );
protected:
ArgsStruct *m_pArgs;
};
inline CCallbackNumberDlg::CCallbackNumberDlg(ArgsStruct *pArgs) : CModalDlg()
{
MYDBGASSERT(pArgs);
m_pArgs = pArgs;
}
//+---------------------------------------------------------------------------
//
// class CRetryAuthenticationDlg
//
// Description: Emulation of the RAS Retry authentication dialog
//
// History: nickball Created 3/1/00
//
//----------------------------------------------------------------------------
class CRetryAuthenticationDlg : public CModalDlg
{
public:
CRetryAuthenticationDlg(ArgsStruct *pArgs);
virtual void OnOK();
virtual void OnCancel();
virtual BOOL OnInitDialog();
virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam );
virtual UINT GetDlgTemplate();
protected:
ArgsStruct *m_pArgs;
BOOL m_fInetCredentials;
static const DWORD m_dwHelp[]; // help id pairs
};
inline CRetryAuthenticationDlg::CRetryAuthenticationDlg(ArgsStruct *pArgs)
: CModalDlg(m_dwHelp, pArgs->pszHelpFile)
{
MYDBGASSERT(pArgs);
m_pArgs = pArgs;
if (m_pArgs)
{
//
// If the phone number calls for a tunnel, and we're not using
// UseSameUserName and we're not actively dialing the tunnel,
// then we must be dialing the Inet portion of the connection.
//
m_fInetCredentials = (!m_pArgs->fUseSameUserName &&
!IsDialingTunnel(m_pArgs) &&
UseTunneling(m_pArgs, m_pArgs->nDialIdx));
}
}
//+---------------------------------------------------------------------------
//
// class CNewAccessPointDlg
//
// Description: Dialog to get the name of a new Access Point from the user
//
// History: t-urama Created 8/2/00
//
//----------------------------------------------------------------------------
class CNewAccessPointDlg : public CModalDlg
{
public:
CNewAccessPointDlg(ArgsStruct *pArgs, LPTSTR *ppAPName);
virtual void OnOK();
virtual BOOL OnInitDialog();
virtual DWORD OnOtherCommand(WPARAM wParam, LPARAM lParam );
protected:
LPTSTR *m_ppszAPName;
ArgsStruct *m_pArgs;
static LRESULT CALLBACK SubClassEditProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
static WNDPROC m_pfnOrgEditWndProc; // the original edit control window proc for subclassing
};
inline CNewAccessPointDlg::CNewAccessPointDlg(ArgsStruct *pArgs, LPTSTR *ppszAPName) : CModalDlg()
{
MYDBGASSERT(pArgs);
m_pArgs = pArgs;
m_ppszAPName = ppszAPName;
}