// Copyright (c) 1997-1999 Microsoft Corporation // // Property Page base class // // 9-9-97 sburns #ifndef PROPPAGE_HPP_INCLUDED #define PROPPAGE_HPP_INCLUDED // PropertyPage extends the Dialog class to provide message cracking for // property page notifications. class PropertyPage : public Dialog { public: // Calls CreatePropertySheetPage and returns the resulting HPROPSHEETPAGE. // Normally, the HPROPSHEETPAGE is deleted by a later call to the Win32 // API ::PropertySheet. If the HPROPSHEETPAGE is not passed to // PropertySheet, or PropertySheet fails, it should be deleted with // ::DestroyPropertySheetPage. virtual HPROPSHEETPAGE Create(); protected: // Invoked upon receipt of the PSN_APPLY notification message. Return true // if you handle the messages, false if you do not. The default // implementation returns false. // // isClosing - true if the sheet is closing (OK was pressed), false if // not (Apply was pressed). virtual bool OnApply(bool isClosing); // Invoked upon receipt of the PSN_HELP notification message. Return true // if you handle the message, false if you do not. The default // implementation returns false. virtual bool OnHelp(); // Invoked upon receipt of the PSN_KILLACTIVE notification message. Return // true if you handle the messages, false if you do not. The default // implementation returns false. virtual bool OnKillActive(); // Invoked upon receipt of the PSN_SETACTIVE notification message. Return // true if you handle the messages, false if you do not. The default // implementation returns false. virtual bool OnSetActive(); // Invoked upon receipt of the PSN_QUERYCANCEL notification message. // Return true if you handle the messages, false if you do not. The // default implementation returns false. virtual bool OnQueryCancel(); // Invoked upon receipt of the PSN_RESET notification message. Return // true if you handle the messages, false if you do not. The default // implementation returns false. virtual bool OnReset(); // Invoked upon receipt of the PSN_WIZBACK notification message. Return // true if you handle the messages, false if you do not. The default // implementation returns false. virtual bool OnWizBack(); // Invoked upon receipt of the PSN_WIZNEXT notification message. Return // true if you handle the messages, false if you do not. The default // implementation returns false. virtual bool OnWizNext(); // Invoked upon receipt of the PSN_WIZFINISH notification message. Return // true if you handle the messages, false if you do not. The default // implementation returns false. // The handler must set the DWLP_MSGRESULT by calling Win::SetWindowLongPtr // to tell the sheet whether or not to shutdown the wizard. virtual bool OnWizFinish(); // Constructs a new instance. Declared protected so that this class // only functions as base class // // dialogResID - resource identifier of the dialog template resource. // // helpMap - array mapping dialog control IDs to context help IDs. The // array must be in the following form: // { // controlID1, helpID1, // controlID2, helpID2, // controlIDn, helpIDn, // 0, 0 // } // // To indicate that a control does not have help, the value of its // corresponding help ID should be -1. This array is copied by the // constuctor. // // deleteOnRelease - true to delete the instance when the Win32 // ::PropertySheet function is about to destroy the sheet, and sends the // PSPCB_RELEASE message to each page's callback. false if the page // instance will be deleted at a later point. PropertyPage( unsigned dialogResID, const DWORD helpMap[], bool deleteOnRelease = true); // protected dtor so that the dtors of derived classes can call this, // the base class' dtor, and to suggest that prop pages are self-deleting. virtual ~PropertyPage(); static INT_PTR APIENTRY propPageDialogProc( HWND dialog, UINT message, WPARAM wparam, LPARAM lparam); static UINT CALLBACK PropSheetPageCallback(HWND hwnd, UINT uMsg, PROPSHEETPAGE* page); private: static PropertyPage* getPage(HWND pageDialog); // not implemented: no copying allowed PropertyPage(const PropertyPage&); const PropertyPage& operator=(const PropertyPage&); bool deleteOnRelease; }; #endif // PROPPAGE_HPP_INCLUDED