#ifndef GRPINFO_H_INCLUDED #define GRPINFO_H_INCLUDED // base implementation of the page/wizard object - handles state class CGroupPageBase { public: // Public interface (in the case where you're not using a derived class CGroupPageBase(CUserInfo* pUserInfo, CDPA* pGroupList); ~CGroupPageBase() { if (NULL != m_hBoldFont) DeleteObject((HGDIOBJ) m_hBoldFont); } INT_PTR HandleGroupMessage(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL GetSelectedGroup(HWND hwnd, LPTSTR pszGroupOut, DWORD cchGroup, CUserInfo::GROUPPSEUDONYM* pgsOut); protected: void InitializeLocalGroupCombo(HWND hwndCombo); void SetGroupDescription(HWND hwndCombo, HWND hwndEdit); void BoldGroupNames(HWND hwnd); void SelectGroup(HWND hwnd, LPCTSTR pszSelect); UINT RadioIdForGroup(LPCTSTR pszGroup); protected: // Message handlers BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam); BOOL OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); void OnRadioChanged(HWND hwnd, UINT idRadio); protected: // Data CUserInfo* m_pUserInfo; CDPA* m_pGroupList; HFONT m_hBoldFont; }; // wizard page for exposing the group membership class CGroupWizardPage: public CPropertyPage, public CGroupPageBase { public: CGroupWizardPage(CUserInfo* pUserInfo, CDPA* pGroupList): CGroupPageBase(pUserInfo, pGroupList) {} protected: // Message handlers virtual INT_PTR DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL OnNotify(HWND hwnd, int idCtrl, LPNMHDR pnmh); }; // property page for exposing group membership class CGroupPropertyPage: public CPropertyPage, public CGroupPageBase { public: CGroupPropertyPage(CUserInfo* pUserInfo, CDPA* pGroupList): CGroupPageBase(pUserInfo, pGroupList) {} protected: // Message handlers virtual INT_PTR DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL OnNotify(HWND hwnd, int idCtrl, LPNMHDR pnmh); }; #endif // !GRPINFO_H_INCLUDED