Simple wizard property sheet class






4.80/5 (6 votes)
Apr 10, 2000

99382

1978
A simply class to turn CPropertySheet into wizard mode without needing to alert the property pages within
Introduction
Windows allows a simple transition of your property sheet into wizard mode. However, this transition requires the
property pages within the sheet to know about this. They should call SetWizardButtons()
with the correct parameters on becoming active - which of course breaks encapsulation. The page needs to know it's part of wizard-style property sheet, and it needs to know its position within the sheet.
My CWizardPropertySheet
class solves the problem for simple wizards by having the
CPropertySheet
-derived class handle the appropriate SetWizardButtons()
calls by
itself.
The CWizardPropertySheet class
The CWizardPropertySheet
is a drop-in replacement for CPropertySheet
. It works both in
wizard and "normal" modes. (The application must call SetWizardMode()
to activate wizard mode, just
as it would with a normal CPropertyPage
.)
To use it, simply #include "WizardPropertySheet.h"
and use CWizardPropertySheet
wherever you would use CPropertySheet
. (Alternatively, you may import the class by ClassWizard.)
What does it do?
The CWizardPropertySheet
shows the property pages added by AddPage()
call in order
they have been added. It disables the Back button on the first page, and it changes Next to
Finish on the last page.
How does it accomplish that?
The message map of the class contains handlers:ON_BN_CLICKED(ID_WIZBACK, OnWizBack) ON_BN_CLICKED(ID_WIZNEXT, OnWizNext)
The ID_WIZBACK
and ID_WIZNEXT
constants are defined in afxres.h
. The
handlers do the proper SetWizardButtons()
call and then call Default();
to allow page
change to proceed.
Don't forget!
Don't forget to call SetWizardMode()
before DoModal()
to put the property sheet into
wizard more.