You can create a special type of property sheet called a wizard, which consists of a sequence of dialog boxes that guide the user through the steps of an operation, such as setting up a device or creating a birthday card. In a wizard property sheet, the pages do not have tabs, and only one page is visible at a time. Also, instead of having Ok and Apply Now buttons, a wizard property sheet has a Back button, a Next or Finish button, and a Cancel button. To tell the property sheet which buttons to enable, use the PSM_SETWIZBUTTONS message with the PSWIZB_BACK, PSWIZB_NEXT, PSWIZB_FINISH, and PSWIZB_DISABLEDFINISH values. You create and initialize a wizard property sheet just as you would a standard property sheet, except that you must include the PSH_WIZARD value in the dwFlags member of the PROPSHEETHEADER structure. The system ignores the pszCaption member; instead, it puts the label of the current page in the title bar of the property sheet. When the user switches from one page to the next, the system updates the title using the label of the current page.
You should use the following values to set the sizes of the elements in your wizard property sheet. Using these values ensures that your pages conform to the Window standards.
WIZ_BODYCX | Width of the body of a page in a wizard property sheet. The body does not include the bitmap area. |
WIZ_BODYX | Horizontal coordinate of the upper left corner of the body of a page in a wizard property sheet. Use zero for the vertical coordinate of the body of a page. |
WIZ_CXBMP | Width of the bitmap area in a page of a wizard property sheet. Use WIZ_CYDLG for the height of the bitmap area. |
WIZ_CXDLG | Width of a page in a wizard property sheet. |
WIZ_CYDLG | Height of a page in a wizard property sheet. |
The dialog box procedure for a page in a wizard property sheet receives all of the same notification messages as a standard property sheet page. In addition, a wizard property sheet page receives three notification messages that a standard property sheet page does not receive: PSN_WIZBACK, PSN_WIZNEXT, and PSN_WIZFINISH. A wizard page receives these notifications when the user chooses the Back, Next, or Finish button.
When the user chooses the Back or Next button, the property sheet automatically advances to the previous or next page. An application can prevent the property sheet from advancing by setting the DWL_MSGRESULT value to -1 in response to the PSN_WIZBACK or PSN_WIZNEXT notification. To jump to a page other than the previous or next one, an application should set DWL_MSGRESULT to the identifier of the dialog box to be displayed.
The system automatically destroys the wizard property sheet when the user clicks the Finish button. An application can prevent the wizard from being destroyed by setting DWL_MSGRESULT to a nonzero value in response to the PSN_WIZFINISH notification message.