//////////////////////////////////////////////////////////////////////////////////////////////////// // CPropertySheetPage is a small wrapper around the PROPSHEETPAGE structure. // The class mostly does parameter validation. // // This is an example of how it can be used... // // // CPropertySheetPage MyPropertySheetPage( // MAKEINTRESOURCE( IDD_PROPPAGE_DEFAULT ), // ( DLGPROC ) MyDlgProc, // PSP_HASHELP // ); // // // The casting operators are defined to cast a CPropertySheetPage to a LPPROPSHEETPAGE, which is // useful for assigning to the elements in a PROPSHEETHEADER // // // PROPSHEETHEADER Psh; // LPPROPSHEETPAGE pPageAry; // extern PROPSHEETPAGE OtherPage; // // pPageAry = new PROPSHEETPAGE[ 2 ] // // // pPageAry[ 0 ] = MyPropertySheetPage; // pPageAry[ 0 ] = OtherPage; // // Psh . ppsp = pPageAry; // // // // // NOTE: this is the signature for the callback function, if specified: // // UINT (CALLBACK FAR * LPFNPSPCALLBACKA)(HWND hwnd, UINT uMsg, struct _PROPSHEETPAGEA FAR *ppsp); // // //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef __PropPg_h__ #define __PropPg_h__ //////////////////////////////////////////////////////////////////////////////////////////////////// // comment this out if you don't want data validation ( class essentially does nothing ) // #define CPropertySheetPage_ValidateParameters //////////////////////////////////////////////////////////////////////////////////////////////////// class CPropertySheetPage : public PROPSHEETPAGE { public: // Construction / destruction CPropertySheetPage( void ); // So We can make an Array of these things CPropertySheetPage( const CPropertySheetPage& r ); // pssTemplate can specify either the resource identifier of the template // or the address of a string that specifies the name of the template CPropertySheetPage( LPCTSTR pszTemplate, DLGPROC pfnDlgProc, DWORD dwFlags = 0, LPARAM lParam = 0L ); CPropertySheetPage( LPCDLGTEMPLATE pResource, DLGPROC pfnDlgProc, DWORD dwFlags = 0, LPARAM lParam = 0L ); // psTemplate can specify either the resource identifier of the template // or the address of a string that specifies the name of the template CPropertySheetPage( LPCTSTR pszTemplate, DLGPROC pfnDlgProc, HICON hIcon, LPCTSTR pszTitle = NULL, DWORD dwFlags = 0, LPARAM lParam = NULL, LPFNPSPCALLBACK pfnCallBack = NULL, UINT FAR * pcRefParent = NULL ); CPropertySheetPage( LPCDLGTEMPLATE pResource, DLGPROC pfnDlgProc, HICON hIcon, LPCTSTR pszTitle = NULL, DWORD dwFlags = 0, LPARAM lParam = NULL, LPFNPSPCALLBACK pfnCallBack = NULL, UINT FAR * pcRefParent = NULL ); // pszTemplate can specify either the resource identifier of the template // or the address of a string that specifies the name of the template CPropertySheetPage( LPCTSTR pszTemplate, DLGPROC pfnDlgProc, LPCTSTR pszIcon, LPCTSTR pszTitle = NULL, DWORD dwFlags = 0, LPARAM lParam = NULL, LPFNPSPCALLBACK pfnCallBack = NULL, UINT FAR * pcRefParent = NULL ); CPropertySheetPage( LPCDLGTEMPLATE pResource, DLGPROC pfnDlgProc, LPCTSTR pszIcon, LPCTSTR pszTitle = NULL, DWORD dwFlags = 0, LPARAM lParam = NULL, LPFNPSPCALLBACK pfnCallBack = NULL, UINT FAR * pcRefParent = NULL ); CPropertySheetPage( LPCPROPSHEETPAGE pPageVector ); CPropertySheetPage& operator=( const CPropertySheetPage& r ); ~CPropertySheetPage( void ); // conversion operator operator LPPROPSHEETPAGE() { return this; } operator LPCPROPSHEETPAGE() { return this; } private: // Helper Fns void _InitData( void ); BOOL _IsRightToLeftLocale( void ) const; // Set with optional validation, defined in the cpp file BOOL _Set_hInstance( HINSTANCE hInst ); BOOL _Set_pszTemplate( LPCTSTR pszTemplate ); BOOL _Set_pResource( LPCDLGTEMPLATE pResource ); BOOL _Set_hIcon( HICON hIcon ); BOOL _Set_pszIcon( LPCTSTR pszIcon ); BOOL _Set_pszTitle( LPCTSTR pszTitle ); BOOL _Set_pfnDlgProc( DLGPROC pfnDlgProc ); BOOL _Set_pfnCallback( LPFNPSPCALLBACK pfnCallBack ); BOOL _Set_lParam( LPARAM lParam ); BOOL _Set_pcRefParent( UINT FAR * pcRefParent ); BOOL _Validate( void ) const; }; #endif // __PropPg_h__