Поделиться через


CPropertyPage::OnWizardFinish

Это функция-член вызывается платформой, когда пользователь щелкает кнопку готово в мастере.

virtual BOOL OnWizardFinish( );

Возвращаемое значение

Ненулевой если страница свойств разрушена при завершении работы мастера; в противном случае – нуль.

Заметки

Когда пользователь нажимает кнопку в мастере Готово платформа вызывает данную функцию. при OnWizardFinish возвращает TRUE (ненулевое значение), страница свойств способны уничтожения (но фактически не уничтожает). Вызов DestroyWindow для уничтожения страницу свойств. Не вызывайте DestroyWindow из OnWizardFinish; при попытке повреждение кучи или другие ошибки.

Можно переопределить этот функцию-член, чтобы определить, пользователь должен предпринять определенные действия при нажатии кнопки готово. При переопределении метода эта функция, возвращаемое FALSE для предотвращения страницу свойств от уничтожения.

Дополнительные сведения о сообщениях отправлять уведомления, когда пользователь отожмет кнопку готово на странице свойств мастера " см. PSN_WIZFINISH в Windows SDK.

Дополнительные сведения о том, как сделать страницы свойств мастер- типа см. в разделе CPropertySheet::SetWizardMode.

Пример

// 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);
}

Требования

Header: afxdlgs.h

См. также

Ссылки

Класс CPropertyPage

Диаграмма иерархии

CPropertySheet::SetWizardMode