CPropertyPage::OnWizardFinish

This member function is called by the framework when the user clicks on the Finish button in a wizard.

virtual BOOL OnWizardFinish( );

Return Value

Nonzero if the property sheet is destroyed when the wizard finishes; otherwise zero.

Remarks

When a user clicks the Finish button in a wizard, the framework calls this function; when OnWizardFinish returns TRUE (a nonzero value), the property sheet is able to be destroyed (but is not actually destroyed). Call DestroyWindow to destroy the property sheet. Do not call DestroyWindow from OnWizardFinish; doing so will cause heap corruption or other errors.

You can override this member function to specify some action the user must take when the Finish button is pressed. When overriding this function, return FALSE to prevent the property sheet from being destroyed.

For more information about notification messages sent when the user presses the Finish button in a wizard property sheet, see PSN_WIZFINISH in the Windows SDK.

For more information on how to make a wizard-type property sheet, see CPropertySheet::SetWizardMode.

Example

// Inform users regarding the selections they have made by  
// navigating the pages in propertysheet.
BOOL CShapePage::OnWizardFinish()
{
   CString report = _T("You have selected the following options:\n");

   // Get the number of property pages from CPropertySheet.
   CPropertySheet* sheet = (CPropertySheet*) GetParent();
   int count = sheet->GetPageCount();   

   // Get the formatted string from each page. This formatted string  
   // will be shown in a message box. Each page knows about the  
   // string to be displayed. For simplicity, we derive a class  
   // from CPropertyPage called CMyPropertyPage. CMyPropertyPage  
   // has a pure virtual member function called GetPageSelections(). 
   // All pages in the property sheet must be derived from  
   // CMyPropertyPage so we loop through each page to get the  
   // formatted string by calling the GetPageSelections() function. 
   for (int i = 0; i < count; i++)
   {
      CMyPropertyPage* page = (CMyPropertyPage*) sheet->GetPage(i);

      CString str;
      page->GetPageSelections(str);
      report += _T("\n") + str;
   }

   AfxMessageBox(report);

   return CPropertyPage::OnWizardFinish();
}
// An example of implementing the GetPageSelections() for CStylePage. 
// CStylePage is a CMyPropertyPage-derived class, which in turn is a  
// CPropertyPage-derived class. 
void CStylePage::GetPageSelections(CString &str)
{
   str.Format(_T("Number of objects to be created = %d"), m_NumObjects);
}
// An example of implementing the GetPageSelections() for CColorPage. 
// CColorPage is a CMyPropertyPage-derived class, which in turn is a  
// CPropertyPage-derived class. 
void CColorPage::GetPageSelections(CString &str)
{
   str = _T("Color selected is ");   
   switch (m_Color)
   {
   case RGB(0, 0, 0):
      str += _T("Black");
      break;

   case RGB(255, 0, 0):
      str += _T("Red");
      break;

   case RGB(0, 255, 0):
      str += _T("Green");
      break;

   case RGB(0, 0, 255):
      str += _T("Blue");
      break;

   default:
      str += _T("Custom");
      break;
   }
}
// An example of implementing the GetPageSelections() for CShapePage. 
// CShapePage is a CMyPropertyPage-derived class, which in turn is a  
// CPropertyPage-derived class. 
void CShapePage::GetPageSelections(CString &str)
{
   CString shapename;
   switch (m_Selection)
   {
   case IDC_RECTANGLE:
      shapename = _T("Rectangle");
      break;

   case IDC_ROUND_RECTANGLE:
      shapename = _T("Round Rectangle");
      break;

   case IDC_ELLIPSE:
      shapename = _T("Ellipse");
      break;
   }

   str.Format(_T("Shape to be created is %s"), shapename);
}

Requirements

Header: afxdlgs.h

See Also

Reference

CPropertyPage Class

Hierarchy Chart

CPropertySheet::SetWizardMode