130 lines
5.1 KiB
C++
130 lines
5.1 KiB
C++
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// CPropertySHeetHeader is a wrapper class around the PROPSHEETHEADER structure
|
|
// this class mostly does data validation. The operator[] and Iterator member class allows for
|
|
// pretty syntax. Hopefully the prettyness outweighs the confusion...
|
|
//
|
|
//
|
|
// CPropertySheetHeader MyPropSheetHeader( 2, // NumPropShtPages
|
|
// PSH_PROPSHEETPAGE | PSH_WIZARD // Flags
|
|
// );
|
|
//
|
|
//
|
|
//
|
|
// CPropertySheetPage MyPropertySheetPage(
|
|
// IDD_PROPPAGE_TEMPLATE,
|
|
// ( DLGPROC ) MyDlgProc,
|
|
// PSP_HASHELP
|
|
// );
|
|
// extern PROPSHEETPAGE OtherPage;
|
|
//
|
|
// MyPropSheetHeader[ 0 ] = MyPropertySheetPage;
|
|
// MyPropSheetHeader[ 1 ] = OtherPage;
|
|
//
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __PhtHdr_h__
|
|
#define __PhtHdr_h__
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Include files
|
|
|
|
#include "PropPg.h"
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Comment this if you do not want parameter validation ( class would do essentially nothing )
|
|
//
|
|
#define CPropertySheetHeader_ValidateParameters
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Property Sheet Header
|
|
|
|
|
|
class CPropertySheetHeader : public PROPSHEETHEADER {
|
|
|
|
// Forward declarations and friend declarations
|
|
class CPropertySheetPageDataIterator;
|
|
friend CPropertySheetPageDataIterator;
|
|
|
|
private: // DATATYPES
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
// CPropertySheetPageDataIterator is for getting at a PROPSHEETPAGE in the ppsp member
|
|
// array of a PROPSHEETHEADER
|
|
class CPropertySheetPageDataIterator {
|
|
// Forward Decls and Friend decls
|
|
friend CPropertySheetHeader;
|
|
|
|
private: // DATA
|
|
UINT m_Index;
|
|
PROPSHEETHEADER *m_pPsh;
|
|
|
|
private: // Construction / destruction
|
|
// This may only be created by CPropertySheetHeader
|
|
CPropertySheetPageDataIterator( UINT index, PROPSHEETHEADER* pPsh )
|
|
: m_Index( index ), m_pPsh( pPsh ) { ; }
|
|
|
|
public:
|
|
~CPropertySheetPageDataIterator( void ) { ; }
|
|
|
|
public: // Public Member Fns
|
|
void operator=( LPCPROPSHEETPAGE p ) {
|
|
assert( m_pPsh -> dwFlags & PSH_PROPSHEETPAGE ); // We only handle this case now
|
|
const_cast< LPPROPSHEETPAGE >( m_pPsh -> ppsp )[ m_Index ] = *p;
|
|
}
|
|
void operator=( HPROPSHEETPAGE FAR * p ) {
|
|
assert( !( m_pPsh -> dwFlags & PSH_PROPSHEETPAGE ) ); // We only handle this case now
|
|
m_pPsh -> phpage[ m_Index ] = *p;
|
|
}
|
|
private: // UNUSED
|
|
CPropertySheetPageDataIterator( void );
|
|
CPropertySheetPageDataIterator( const CPropertySheetPageDataIterator& r );
|
|
};
|
|
|
|
|
|
public: // symbol classes for signature disambiguation...
|
|
class UsePropertySheetArray{ ; };
|
|
class UsePropertySheetHandleArray{ ; };
|
|
|
|
public: // Construction / destruction
|
|
CPropertySheetHeader( void );
|
|
CPropertySheetHeader( LPCPROPSHEETPAGE pPageVector, int nPages, PFNPROPSHEETCALLBACK pfnCallback = NULL );
|
|
CPropertySheetHeader( int nPages, UsePropertySheetArray dummy, PFNPROPSHEETCALLBACK pfnCallback = NULL );
|
|
CPropertySheetHeader( int nPages, DWORD dwFlags, PFNPROPSHEETCALLBACK pfnCallback = NULL );
|
|
CPropertySheetHeader( int nPages, UsePropertySheetHandleArray dummy, PFNPROPSHEETCALLBACK pfnCallback = NULL );
|
|
~CPropertySheetHeader( void );
|
|
|
|
// Methods and operators
|
|
CPropertySheetPageDataIterator operator[]( int index );
|
|
void SetParent( HWND hWndParent ) { _Set_hwndParent( hWndParent ); }
|
|
|
|
// Conversion operator
|
|
operator LPPROPSHEETHEADER() { return this; }
|
|
|
|
private: // Helper Fns
|
|
BOOL _InitData( void );
|
|
BOOL _Validate( void );
|
|
BOOL _Set_hwndParent( HWND hwndParent );
|
|
BOOL _Set_hInstance( HINSTANCE hInstance );
|
|
BOOL _Set_hIcon( HICON hIcon );
|
|
BOOL _Set_pszIcon( LPCTSTR pszIcon );
|
|
BOOL _Set_pszCaption( LPCTSTR pszCaption );
|
|
BOOL _Set_nStartPage( UINT nStartPage );
|
|
BOOL _Set_pStartPage( LPCTSTR pStartPage );
|
|
BOOL _Set_ppsp( LPCPROPSHEETPAGE ppsp, UINT nPages );
|
|
BOOL _Set_phpage( HPROPSHEETPAGE FAR phpage, UINT nPages );
|
|
BOOL _Set_pfnCallback( PFNPROPSHEETCALLBACK pfnCallback );
|
|
BOOL _DeletePageData( void );
|
|
|
|
private: // UNUSED
|
|
CPropertySheetHeader( const CPropertySheetHeader& r );
|
|
CPropertySheetHeader& operator=( const CPropertySheetHeader& r );
|
|
};
|
|
|
|
#endif // __PhtHdr_h__
|