480 lines
14 KiB
C
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;
|
||
|
}
|
||
|
|