/*++ Copyright (c) 1994-2001 Microsoft Corporation Module Name : supdlgs.h Abstract: Supporting dialogs definitions Author: Ronald Meijer (ronaldm) Sergei Antonov (sergeia) Project: Internet Services Manager Revision History: --*/ UINT IisMessageBox(HWND hWnd, LPCTSTR szText, UINT nType, UINT nIDHelp); UINT IisMessageBox(HWND hWnd, UINT nIDText, UINT nType, UINT nIDHelp); class CUserAccountDlg : public CDialog /*++ Class Description: User account dialog. Present a user account/password and allow changing, browsing and checking the password Public Interface: CUserAccountDlg : Constructor --*/ { // // Construction // public: CUserAccountDlg( IN LPCTSTR lpstrServer, IN LPCTSTR lpstrUserName, IN LPCTSTR lpstrPassword, IN CWnd * pParent = NULL ); // // Dialog Data // public: //{{AFX_DATA(CUserAccountDlg) enum { IDD = IDD_USER_ACCOUNT }; CEdit m_edit_UserName; CEdit m_edit_Password; CButton m_chk_Delegation; CString m_strUserName; //}}AFX_DATA BOOL m_fDelegation; CStrPassword m_strPassword; // // Overrides // protected: //{{AFX_VIRTUAL(CUserAccountDlg) protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL // // Implementation // protected: //{{AFX_MSG(CUserAccountDlg) virtual BOOL OnInitDialog(); afx_msg void OnButtonBrowseUsers(); afx_msg void OnButtonCheckPassword(); afx_msg void OnChangeEditUsername(); afx_msg void OnCheckDelegation(); afx_msg void OnOK(); afx_msg void OnHelp(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: CString m_strServer; }; class CClearTxtDlg : public CDialog /*++ Class Description: Dialog which displays the clear text warning Public Interface: CClearTxtDlg : Constructor --*/ { public: // // Constructor // CClearTxtDlg(CWnd * pParent = NULL); // // Dialog Data // protected: //{{AFX_DATA(CClearTxtDlg) enum { IDD = IDD_CLEARTEXTWARNING }; //}}AFX_DATA // // Overrides // protected: //{{AFX_VIRTUAL(CClearTxtDlg) protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL // // Implementation // protected: //{{AFX_MSG(CClearTxtDlg) virtual BOOL OnInitDialog(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; class CIPAccessDescriptorListBox : public CHeaderListBox /*++ Class Description: Listbox of CIPAccessDescriptor objects Public Interface: CIPAccessDescriptorListBox : Constructor GetItem : Get CIPAccessDescriptor item at specified position in the listbox AddItem : Add new CIPAccessDescriptor item to the listbox Initialize : Initialize the listbox --*/ { DECLARE_DYNAMIC(CIPAccessDescriptorListBox); public: // // Number of bitmaps // static const nBitmaps; // // Constructor/Destructor // public: CIPAccessDescriptorListBox( IN BOOL fDomainsAllowed = FALSE ); // // Interface // public: CIPAccessDescriptor * GetItem( IN UINT nIndex ); int AddItem( IN const CIPAccessDescriptor * pItem ); // // Return the singly selected item, or NULL // if 0, or more than one item is selected // CIPAccessDescriptor * GetSelectedItem( OUT int * pnSel = NULL ); // // Return next selected listbox item (doesn't matter // if the listbox is single select or multi-select) // CIPAccessDescriptor * GetNextSelectedItem( IN OUT int * pnStartingIndex ); virtual BOOL Initialize(); protected: virtual void DrawItemEx( IN CRMCListBoxDrawStruct & ds ); protected: BOOL m_fDomainsAllowed; CString m_strGranted; CString m_strDenied; CString m_strFormat; }; class CAccessEntryListBox : public CRMCListBox /*++ Class Description: Listbox of access entry objects. Listbox may be single or multiselect. Public Interface: CAccessEntryListBox : Constructor AddToAccessList : Add to list FillAccessListBox : Fill listbox ResolveAccessList : Resolve all SIDS in the container AddUserPermissions : Add user permissions GetSelectedItem : Get item if it's the only one selected, or NULL. --*/ { DECLARE_DYNAMIC(CAccessEntryListBox); public: static const nBitmaps; // Number of bitmaps // // Constructor // public: CAccessEntryListBox( IN int nTab = 0 ); // // Interface // public: // // Return the singly selected item, or NULL // if 0, or more than one item is selected // CAccessEntry * GetSelectedItem( OUT int * pnSel = NULL ); // // Return next selected listbox item (doesn't matter // if the listbox is single select or multi-select) // CAccessEntry * GetNextSelectedItem( IN OUT int * pnStartingIndex ); // // Get item at selection or NULL // CAccessEntry * GetItem(UINT nIndex); // // Interface to container // public: BOOL AddToAccessList( IN CWnd * pWnd, IN LPCTSTR lpstrServer, IN CObListPlus & obl ); void FillAccessListBox( IN CObListPlus & obl ); protected: void ResolveAccessList( IN CObListPlus &obl ); BOOL AddUserPermissions( IN LPCTSTR lpstrServer, IN CObListPlus &oblSID, IN CAccessEntry * newUser, IN ACCESS_MASK accPermissions ); // // Interface to listbox // protected: int AddItem(CAccessEntry * pItem); void SetTabs(int nTab); protected: virtual void DrawItemEx(CRMCListBoxDrawStruct & s); private: int m_nTab; }; class CDnsNameDlg : public CDialog { /*++ Class Description: DNS Name resolution dialog. Enter a DNS name, and this will be resolved to an IP address. Optionally set the value in associated ip control. Public Interface: CDnsNameDlg : Construct the dialog QueryIPValue : Find out the resolved IP address (only set when OK is pressed). --*/ // // Construction // public: // // Construct with associated IP address control // CDnsNameDlg( IN CIPAddressCtrl * pIpControl = NULL, IN CWnd * pParent = NULL ); // // Construct with IP value // CDnsNameDlg( IN DWORD dwIPValue, IN CWnd * pParent = NULL ); DWORD QueryIPValue() const; // // Dialog Data // protected: //{{AFX_DATA(CDnsNameDlg) enum { IDD = IDD_DNS }; CEdit m_edit_DNSName; CButton m_button_OK; //}}AFX_DATA // // Overrides // protected: //{{AFX_VIRTUAL(CDnsNameDlg) protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL // // Implementation // protected: //{{AFX_MSG(CDnsNameDlg) virtual void OnOK(); virtual BOOL OnInitDialog(); afx_msg void OnChangeEditDnsName(); //}}AFX_MSG DECLARE_MESSAGE_MAP() DWORD FillIpControlFromName(); DWORD FillNameFromIpValue(); private: CIPAddressCtrl * m_pIpControl; DWORD m_dwIPValue; }; class CIPAccessDlg : public CDialog /*++ Class Description: Access description editor dialog. If constructed with a NULL access descriptor pointer, the access descriptor object will be allocated. Otherwise, the dialog will work with the given access descriptor Public Interface: CIPAccessDlg : Constructor --*/ { // // Construction // public: // // standard constructor // CIPAccessDlg( IN BOOL fDenyAccessMode, IN OUT CIPAccessDescriptor *& pAccess, IN CObListPlus * poblAccessList = NULL, IN CWnd * pParent = NULL, IN BOOL fAllowDomains = FALSE ); // // Dialog Data // protected: // // Must match type order // enum { RADIO_SINGLE, RADIO_MULTIPLE, RADIO_DOMAIN, }; //{{AFX_DATA(CIPAccessDlg) enum { IDD = IDD_IP_ACCESS }; int m_nStyle; CEdit m_edit_Domain; CStatic m_static_IpAddress; CStatic m_static_SubnetMask; CButton m_button_DNS; CButton m_button_OK; //}}AFX_DATA CButton m_radio_Domain; CIPAddressCtrl m_ipa_IPAddress; CIPAddressCtrl m_ipa_SubnetMask; // // Overrides // protected: //{{AFX_VIRTUAL(CIPAccessDlg) protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL // // Implementation // protected: //{{AFX_MSG(CIPAccessDlg) virtual BOOL OnInitDialog(); virtual void OnOK(); virtual void OnCancel(); afx_msg void OnRadioMultiple(); afx_msg void OnRadioSingle(); afx_msg void OnRadioDomain(); afx_msg void OnButtonDns(); //}}AFX_MSG afx_msg void OnItemChanged(); DECLARE_MESSAGE_MAP() void SetControlStates( IN int nStyle ); private: BOOL m_fNew; BOOL m_fDenyAccessMode; BOOL m_fAllowDomains; CComBSTR m_bstrIPAddress; CComBSTR m_bstrNetworkID; CComBSTR m_bstrDomainName; CIPAccessDescriptor *& m_pAccess; CObListPlus * m_poblAccessList; }; // // Inline Expansion // // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< inline CAccessEntryListBox::CAccessEntryListBox ( IN int nTab ) { SetTabs(nTab); } inline void CAccessEntryListBox::SetTabs( IN int nTab ) { m_nTab = nTab; } inline CAccessEntry * CAccessEntryListBox::GetItem( IN UINT nIndex ) { return (CAccessEntry *)GetItemDataPtr(nIndex); } inline int CAccessEntryListBox::AddItem( IN CAccessEntry * pItem ) { return AddString ((LPCTSTR)pItem); } inline CAccessEntry * CAccessEntryListBox::GetSelectedItem( OUT int * pnSel ) { return (CAccessEntry *)CRMCListBox::GetSelectedListItem(pnSel); } inline CAccessEntry * CAccessEntryListBox::GetNextSelectedItem( IN OUT int * pnStartingIndex ) { return (CAccessEntry *)CRMCListBox::GetNextSelectedItem(pnStartingIndex); } inline CIPAccessDescriptor * CIPAccessDescriptorListBox::GetItem( IN UINT nIndex ) { return (CIPAccessDescriptor *)GetItemDataPtr(nIndex); } inline int CIPAccessDescriptorListBox::AddItem( IN const CIPAccessDescriptor * pItem ) { return AddString((LPCTSTR)pItem); } inline CIPAccessDescriptor * CIPAccessDescriptorListBox::GetSelectedItem( OUT int * pnSel ) { return (CIPAccessDescriptor *)CRMCListBox::GetSelectedListItem(pnSel); } inline CIPAccessDescriptor * CIPAccessDescriptorListBox::GetNextSelectedItem( IN OUT int * pnStartingIndex ) { return (CIPAccessDescriptor *)CRMCListBox::GetNextSelectedItem(pnStartingIndex); } inline DWORD CDnsNameDlg::QueryIPValue() const { return m_dwIPValue; }