CPropertyPage-Klasse

Stellt die einzelnen Seiten eines Eigenschaftenblatts dar; wird auch als "Dialogfeld im Registerformat" bezeichnet.

Syntax

class CPropertyPage : public CDialog

Member

Öffentliche Konstruktoren

Name Beschreibung
CPropertyPage::CPropertyPage Erstellt ein CPropertyPage-Objekt.

Öffentliche Methoden

Name Beschreibung
CPropertyPage::CancelToClose Ändert die Schaltfläche "OK", um "Schließen" zu lesen, und deaktiviert die Schaltfläche "Abbrechen", nachdem eine nicht wiederherstellbare Änderung auf der Seite eines modalen Eigenschaftenblatts vorgenommen wurde.
CPropertyPage::Construct Erstellt ein CPropertyPage-Objekt. Verwenden Construct Sie diese Methode, wenn Sie Die Parameter zur Laufzeit angeben möchten oder wenn Sie Arrays verwenden.
CPropertyPage::GetPSP Ruft die Windows-Struktur PROPSHEETPAGE ab, die dem CPropertyPage Objekt zugeordnet ist.
CPropertyPage::OnApply Wird vom Framework aufgerufen, wenn auf die Schaltfläche "Jetzt anwenden " geklickt wird.
CPropertyPage::OnCancel Wird vom Framework aufgerufen, wenn auf die Schaltfläche "Abbrechen " geklickt wird.
CPropertyPage::OnKillActive Wird vom Framework aufgerufen, wenn die aktuelle Seite nicht mehr die aktive Seite ist. Führen Sie hier eine Datenüberprüfung durch.
CPropertyPage::OnOK Wird vom Framework aufgerufen, wenn auf die Schaltfläche "OK", "Jetzt anwenden" oder "Schließen " geklickt wird.
CPropertyPage::OnQueryCancel Wird vom Framework aufgerufen, wenn auf die Schaltfläche "Abbrechen " geklickt wird und bevor der Abbruch erfolgt ist.
CPropertyPage::OnReset Wird vom Framework aufgerufen, wenn auf die Schaltfläche "Abbrechen " geklickt wird.
CPropertyPage::OnSetActive Wird vom Framework aufgerufen, wenn die Seite zur aktiven Seite wird.
CPropertyPage::OnWizardBack Wird vom Framework aufgerufen, wenn auf die Schaltfläche "Zurück " geklickt wird, während ein Eigenschaftenblatt vom Assistententyp verwendet wird.
CPropertyPage::OnWizardFinish Wird vom Framework aufgerufen, wenn auf die Schaltfläche "Fertig stellen " bei Verwendung eines Eigenschaftenblatts vom Assistententyp geklickt wird.
CPropertyPage::OnWizardNext Wird vom Framework aufgerufen, wenn beim Verwenden eines Eigenschaftenblatts vom Assistenten auf die Schaltfläche "Weiter " geklickt wird.
CPropertyPage::QuerySiblings Leitet die Nachricht an jede Seite des Eigenschaftenblatts weiter.
CPropertyPage::SetModified Rufen Sie auf, um die Schaltfläche "Jetzt anwenden " zu aktivieren oder zu deaktivieren.

Öffentliche Datenmember

Name Beschreibung
CPropertyPage::m_psp Die Windows-Struktur PROPSHEETPAGE . Bietet Zugriff auf grundlegende Eigenschaftenseitenparameter.

Hinweise

Wie bei Standarddialogfeldern leiten Sie eine Klasse für jede Seite im Eigenschaftenblatt ab CPropertyPage . Um abgeleitete Objekte zu verwenden CPropertyPage, erstellen Sie zuerst ein CPropertySheet Objekt, und erstellen Sie dann ein Objekt für jede Seite, die im Eigenschaftenblatt enthalten ist. Rufen Sie CPropertySheet::AddPage jede Seite im Blatt auf, und zeigen Sie dann das Eigenschaftenblatt an, indem Sie ein modales Eigenschaftenblatt oder CPropertySheet::Create ein modusloses Eigenschaftenblatt aufrufenCPropertySheet::DoModal.

Sie können einen Dialogfeldtyp erstellen, der als Assistent bezeichnet wird, der aus einem Eigenschaftenblatt mit einer Abfolge von Eigenschaftenseiten besteht, die den Benutzer durch die Schritte eines Vorgangs leiten, z. B. das Einrichten eines Geräts oder das Erstellen eines Newsletters. In einem Dialogfeld "Registerkarten vom Assistententyp" verfügen die Eigenschaftenseiten nicht über Registerkarten, und es wird jeweils nur eine Eigenschaftenseite angezeigt. Anstelle von Schaltflächen "OK " und "Jetzt anwenden" verfügt ein Dialogfeld für die Registerkarte "Assistenttyp" über eine Schaltfläche "Zurück ", eine Schaltfläche "Weiter " oder "Fertig stellen " und eine Schaltfläche "Abbrechen ".

Weitere Informationen zum Einrichten eines Eigenschaftenblatts als Assistent finden Sie unter CPropertySheet::SetWizardMode. Weitere Informationen zur Verwendung von CPropertyPage Objekten finden Sie im Artikel "Eigenschaftenblätter" und "Eigenschaftenseiten".

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Anforderungen

Headerafxdlgs.h:

CPropertyPage::CancelToClose

Rufen Sie diese Funktion auf, nachdem eine nicht wiederherstellbare Änderung an den Daten auf einer Seite eines modalen Eigenschaftenblatts vorgenommen wurde.

void CancelToClose();

Hinweise

Mit dieser Funktion wird die Schaltfläche "OK " in "Schließen " geändert und die Schaltfläche "Abbrechen " deaktiviert. Diese Änderung benachrichtigt den Benutzer, dass eine Änderung dauerhaft ist und die Änderungen nicht abgebrochen werden können.

Die CancelToClose Memberfunktion führt in einem moduslosen Eigenschaftenblatt nichts aus, da in einem Moduslosen Eigenschaftenblatt standardmäßig keine Schaltfläche "Abbrechen " vorhanden ist.

Beispiel

Siehe das Beispiel für CPropertyPage::QuerySiblings.

CPropertyPage::Construct

Rufen Sie diese Memberfunktion auf, um ein CPropertyPage Objekt zu erstellen.

void Construct(
    UINT nIDTemplate,
    UINT nIDCaption = 0);

void Construct(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption = 0);

void Construct(
    UINT nIDTemplate,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0);

void Construct(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0);

Parameter

nIDTemplate
ID der Vorlage, die für diese Seite verwendet wird.

nIDCaption
ID des Namens, der auf der Registerkarte für diese Seite platziert werden soll. Wenn 0, wird der Name aus der Dialogvorlage für diese Seite übernommen.

lpszTemplateName
Enthält eine mit Null beendete Zeichenfolge, die den Namen einer Vorlagenressource darstellt.

nIDHeaderTitle
ID des Namens, der an der Titelposition des Eigenschaftenseitenkopfs platziert werden soll. Standardmäßig 0.

nIDHeaderSubTitle
ID des Namens, der an der Untertitelposition des Eigenschaftenseitenkopfs platziert werden soll. Standardmäßig 0.

Hinweise

Das Objekt wird angezeigt, nachdem alle folgenden Bedingungen erfüllt sind:

  • Die Seite wurde mithilfe eines CPropertySheet::AddPageEigenschaftenblatts zu einem Eigenschaftenblatt hinzugefügt.

  • Das Eigenschaftenblatt DoModal oder Create die Funktion wurde aufgerufen.

  • Der Benutzer hat diese Seite ausgewählt (tabbed to).

Rufen Sie auf Construct , wenn einer der anderen Klassenkonstruktoren nicht aufgerufen wurde. Die Construct Memberfunktion ist flexibel, da Sie die Parameter-Anweisung leer lassen und dann mehrere Parameter und Konstruktionen an einem beliebigen Punkt im Code angeben können.

Sie müssen verwenden Construct , wenn Sie mit Arrays arbeiten, und Sie müssen für jedes Element des Arrays aufrufen Construct , damit die Datenmember ordnungsgemäßen Werten zugewiesen werden.

Beispiel

// Declare a CPropertySheet object.
CPropertySheet sheet(_T("Simple PropertySheet"));

// Create three CPropertyPage objects whose template IDs are specified
// in rgID array, and add each page to the CPropertySheet object. 
const int c_cPages = 3;
CPropertyPage   pages[c_cPages];
UINT rgID[c_cPages] = { IDD_STYLE, IDD_COLOR, IDD_SHAPE };
for (int i = 0; i < c_cPages; i++)
{
   pages[i].Construct(rgID[i]);
   sheet.AddPage(&pages[i]);
}

// Display a modal CPropertySheet dialog.
sheet.DoModal();

CPropertyPage::CPropertyPage

Erstellt ein CPropertyPage-Objekt.

CPropertyPage();

explicit CPropertyPage(
    UINT nIDTemplate,
    UINT nIDCaption = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

explicit CPropertyPage(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

CPropertyPage(
    UINT nIDTemplate,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

CPropertyPage(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

Parameter

nIDTemplate
ID der Vorlage, die für diese Seite verwendet wird.

nIDCaption
ID des Namens, der auf der Registerkarte für diese Seite platziert werden soll. Wenn 0, wird der Name aus der Dialogvorlage für diese Seite übernommen.

dwSize
lpszTemplateName Verweist auf eine Zeichenfolge, die den Namen der Vorlage für diese Seite enthält. Kann nicht sein NULL.

nIDHeaderTitle
ID des Namens, der an der Titelposition des Eigenschaftenseitenkopfs platziert werden soll.

nIDHeaderSubTitle
ID des Namens, der an der Untertitelposition des Eigenschaftenseitenkopfs platziert werden soll.

Hinweise

Das Objekt wird angezeigt, nachdem alle folgenden Bedingungen erfüllt sind:

  • Die Seite wurde mithilfe eines CPropertySheet::AddPageEigenschaftenblatts zu einem Eigenschaftenblatt hinzugefügt.

  • Das Eigenschaftenblatt DoModal oder Create die Funktion wurde aufgerufen.

  • Der Benutzer hat diese Seite ausgewählt (tabbed to).

Wenn Sie über mehrere Parameter verfügen (z. B. wenn Sie ein Array verwenden), verwenden Sie CPropertySheet::Construct anstelle von CPropertyPage.

Beispiel

// Declare a CStylePage object, which is a CPropertyPage-derived class.
CStylePage stylePage;

// Declare a CPropertyPage object with IDD_SHAPE, the ID of the 
// template used for this page. 
CPropertyPage shapePage(IDD_SHAPE);

CPropertyPage::GetPSP

Ruft die Windows-Struktur PROPSHEETPAGE ab, die dem CPropertyPage Objekt zugeordnet ist.

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Rückgabewert

Ein Verweis auf die PROPSHEETPAGE Struktur.

CPropertyPage::m_psp

m_psp ist eine Struktur, deren Member die Merkmale von PROPSHEETPAGE.

PROPSHEETPAGE m_psp;

Hinweise

Verwenden Sie diese Struktur, um die Darstellung einer Eigenschaftenseite zu initialisieren, nachdem sie erstellt wurde.

Weitere Informationen zu dieser Struktur, einschließlich einer Auflistung seiner Mitglieder, finden Sie im PROPSHEETPAGE Windows SDK.

Beispiel

CPropertySheet sheet(_T("Simple PropertySheet"));

// Change the settings of the three pages to enable property sheet's 
// Help button when the page is active.  CStylePage, CShapePage, and 
// CColorPage are CPropertyPage-derived classes.
CStylePage pageStyle;
pageStyle.m_psp.dwFlags |= PSP_HASHELP;

CColorPage pageColor;
pageColor.m_psp.dwFlags |= PSP_HASHELP;

CShapePage pageShape;
pageShape.m_psp.dwFlags |= PSP_HASHELP;

sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);

sheet.SetWizardMode();

sheet.DoModal();

CPropertyPage::OnApply

Diese Memberfunktion wird vom Framework aufgerufen, wenn der Benutzer die Schaltfläche "OK " oder die Schaltfläche "Jetzt anwenden" auswäht.

virtual BOOL OnApply();

Rückgabewert

Nonzero, wenn die Änderungen akzeptiert werden; andernfalls 0.

Hinweise

Wenn das Framework diese Funktion aufruft, werden Änderungen an allen Eigenschaftenseiten im Eigenschaftenblatt akzeptiert, das Eigenschaftenblatt behält den Fokus und OnApply gibt den TRUE Wert 1 zurück. Bevor OnApply sie vom Framework aufgerufen werden können, müssen Sie den Parameter aufgerufen SetModified und auf diese TRUEfestgelegt haben. Dadurch wird die Schaltfläche "Jetzt anwenden" aktiviert, sobald der Benutzer eine Änderung auf der Eigenschaftenseite vor nimmt.

Überschreiben Sie diese Memberfunktion, um anzugeben, welche Aktion ihr Programm ausführt, wenn der Benutzer die Schaltfläche "Jetzt anwenden" auswählt. Beim Überschreiben sollte die Funktion zurückkehren TRUE , um Änderungen anzunehmen und FALSE zu verhindern, dass Änderungen wirksam werden.

Die Standardimplementierung von OnApply Aufrufen OnOK.

Weitere Informationen zu Benachrichtigungen, die gesendet werden, wenn der Benutzer die Schaltfläche "Jetzt anwenden " oder "OK " in einem Eigenschaftenblatt drückt, finden Sie im PSN_APPLY Windows SDK.

Beispiel

Sehen Sie sich das Beispiel für CPropertyPage::OnOK an.

CPropertyPage::OnCancel

Diese Memberfunktion wird vom Framework aufgerufen, wenn die Schaltfläche "Abbrechen " ausgewählt ist.

virtual void OnCancel();

Hinweise

Überschreiben Sie diese Memberfunktion, um Schaltflächenaktionen abbrechen auszuführen. Standardmäßig werden alle vorgenommenen Änderungen aufgehoben.

Beispiel

// Discard any selection the user made to this page.  The object
// in the view will be painted with the initial color when the
// CPropertySheet dialog is first shown. CColorPage is a 
// CPropertyPage-derived class.
void CColorPage::OnCancel()
{
   // Reset the color saved in the document class.  m_InitialColor
   // is a member variable of CColorPage and it is the color shown 
   // in the view before CPropertySheet is shown.
   // doc->m_Color is the color saved in the document class, and 
   // this is the color to be used by the view class.
   CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetMainWnd();
   CMDIChildWnd* pChild = pFrame->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*)pChild->GetActiveDocument();
   doc->m_Color = m_InitialColor;

   // Tell the view to paint with the initial color.
   CView* view = pChild->GetActiveView();
   view->Invalidate();

   CPropertyPage::OnCancel();
}

// The default MFC implementation of OnReset() would call OnCancel().
void CColorPage::OnReset()
{
   CPropertyPage::OnReset();
}

CPropertyPage::OnKillActive

Diese Memberfunktion wird vom Framework aufgerufen, wenn die Seite nicht mehr die aktive Seite ist.

virtual BOOL OnKillActive();

Rückgabewert

Nonzero, wenn Daten erfolgreich aktualisiert wurden, andernfalls 0.

Hinweise

Überschreiben Sie diese Memberfunktion, um spezielle Datenüberprüfungsaufgaben auszuführen.

Die Standardimplementierung dieser Memberfunktion kopiert Einstellungen von den Steuerelementen auf der Eigenschaftenseite in die Membervariablen der Eigenschaftenseite. Wenn die Daten aufgrund eines DDV-Fehlers (Dialog Data Validation) nicht erfolgreich aktualisiert wurden, behält die Seite den Fokus.

Nachdem diese Memberfunktion erfolgreich zurückgegeben wurde, ruft das Framework die Funktion der Seite OnOK auf.

Beispiel

// Validate the value entered to the "Number" edit control. Its
// value must be at least one. If not, tell the user and set the
// focus to the "Number" edit control. CStylePage is a 
// CPropertyPage-derived class.
BOOL CStylePage::OnKillActive() 
{
   int num = GetDlgItemInt(IDC_NUMOBJECTS);
   if (num <= 0)
   {
      AfxMessageBox(_T("Number of objects must be at least 1."));
      CEdit* edit = (CEdit*) GetDlgItem(IDC_NUMOBJECTS);
      edit->SetFocus();
      edit->SetSel(0, -1);
      return 0;
   }

   return CPropertyPage::OnKillActive();
}

CPropertyPage::OnOK

Diese Memberfunktion wird vom Framework aufgerufen, wenn der Benutzer entweder die Schaltfläche "OK " oder " Jetzt anwenden" auswähnt, unmittelbar nach dem Aufruf des Frameworks OnKillActive.

virtual void OnOK();

Hinweise

Wenn der Benutzer entweder die Schaltfläche "OK " oder die Schaltfläche "Jetzt anwenden " auswäht, empfängt das Framework die PSN_APPLY Benachrichtigung von der Eigenschaftenseite. Der Aufruf OnOK erfolgt nicht, wenn Sie anrufen CPropertySheet::PressButton , da die Eigenschaftenseite die Benachrichtigung in diesem Fall nicht sendet.

Überschreiben Sie diese Memberfunktion, um zusätzliches Verhalten zu implementieren, das für die aktuell aktive Seite spezifisch ist, wenn der Benutzer das gesamte Eigenschaftenblatt schließt.

Die Standardimplementierung dieser Memberfunktion kennzeichnet die Seite als "sauber", um anzuzeigen, dass die Daten in der OnKillActive Funktion aktualisiert wurden.

Beispiel

// Accept the new color selection and dismiss the CPropertySheet
// dialog. The view's object will be painted with the new selected
// color. CColorPage is a CPropertyPage-derived class.
void CColorPage::OnOK() 
{
   // Store the new selected color to a member variable of 
   // document class.  m_Color is a member varible of CColorPage 
   // and it stores the new selected color.  doc->m_Color is 
   // the color saved in the document class and it is the color 
   // used by the view class.
   CMDIFrameWnd* pframe = (CMDIFrameWnd*) AfxGetMainWnd();
   CMDIChildWnd* pchild = pframe->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*) pchild->GetActiveDocument();
   doc->m_Color = m_Color;

   // Tell the view to paint with the new selected color.
   CView* view = pchild->GetActiveView();
   view->Invalidate();
  
   CPropertyPage::OnOK();
}

// The default MFC implementation of OnApply() would call OnOK().
BOOL CColorPage::OnApply() 
{
   return CPropertyPage::OnApply();
}

CPropertyPage::OnQueryCancel

Diese Memberfunktion wird vom Framework aufgerufen, wenn der Benutzer die Schaltfläche "Abbrechen " auswählt und bevor die Abbruchaktion ausgeführt wurde.

virtual BOOL OnQueryCancel();

Rückgabewert

Gibt zurück FALSE , um den Abbruchvorgang zu verhindern oder TRUE zuzulassen.

Hinweise

Überschreiben Sie diese Memberfunktion, um eine Aktion anzugeben, die das Programm ausführt, wenn der Benutzer die Schaltfläche "Abbrechen " auswählt.

Die Standardimplementierung von OnQueryCancel Rückgaben TRUE.

Beispiel

// Query the user whether to abort the changes if the new selected
// color (m_Color) is different from the initial color 
// (m_InitialColor) when the CPropertySheet dialog is first shown.
// CColorPage is a CPropertyPage-derived class.
BOOL CColorPage::OnQueryCancel() 
{
   if (m_InitialColor != m_Color)
   {
      if (AfxMessageBox(_T("Abort the changes?"), MB_YESNO) == IDNO)
         return FALSE;  
   }

   return CPropertyPage::OnQueryCancel();
}

CPropertyPage::OnReset

Diese Memberfunktion wird vom Framework aufgerufen, wenn der Benutzer die Schaltfläche "Abbrechen " auswäht.

virtual void OnReset();

Hinweise

Wenn das Framework diese Funktion aufruft, werden Änderungen an allen Eigenschaftenseiten, die der Benutzer zuvor durch Auswählen der Schaltfläche "Jetzt anwenden" vorgenommen hat, deaktiviert Karte und das Eigenschaftenblatt behält den Fokus.

Überschreiben Sie diese Memberfunktion, um anzugeben, welche Aktion das Programm ausführt, wenn der Benutzer die Schaltfläche "Abbrechen " auswählt.

Die Standardimplementierung von OnReset "erledigt" nichts.

Beispiel

Siehe das Beispiel für CPropertyPage::OnCancel.

CPropertyPage::OnSetActive

Diese Memberfunktion wird vom Framework aufgerufen, wenn die Seite vom Benutzer ausgewählt wird und zur aktiven Seite wird.

virtual BOOL OnSetActive();

Rückgabewert

Nonzero, wenn die Seite erfolgreich aktiviert wurde; andernfalls 0.

Hinweise

Überschreiben Sie diese Memberfunktion, um Aufgaben auszuführen, wenn eine Seite aktiviert wird. Ihre Außerkraftsetzung dieser Memberfunktion würde in der Regel die Standardversion nach dem Aktualisieren von Datenmembern aufrufen, um es zu ermöglichen, die Seitensteuerelemente mit den neuen Daten zu aktualisieren.

Die Standardimplementierung erstellt das Fenster für die Seite, wenn sie zuvor nicht erstellt wurde, und macht es zur aktiven Seite.

Beispiel

Sehen Sie sich das Beispiel für CPropertySheet::SetFinishText an.

CPropertyPage::OnWizardBack

Diese Memberfunktion wird vom Framework aufgerufen, wenn der Benutzer die Schaltfläche "Zurück " in einem Assistenten auswählt.

virtual LRESULT OnWizardBack();

Rückgabewert

0, um automatisch zur nächsten Seite zu wechseln; -1, um zu verhindern, dass die Seite geändert wird. Um zu einer anderen Seite als dem nächsten zu springen, geben Sie den Bezeichner des anzuzeigenden Dialogfelds zurück.

Hinweise

Überschreiben Sie diese Memberfunktion, um eine Aktion anzugeben, die der Benutzer ausführen muss, wenn die Schaltfläche "Zurück " gedrückt wird.

Weitere Informationen zum Erstellen eines Eigenschaftenblatts vom Assistententyp finden Sie unter CPropertySheet::SetWizardMode.

Beispiel

// The Back button is selected from the propertysheet.  Get the selected 
// radio button of the page by looping through all buttons on the 
// pages.  m_radioColor is a member variable of 
// CColorPage (a CPropertyPage-derived class).  Its initial value 
// is initialized in OnInitDialog().
LRESULT CColorPage::OnWizardBack()
{
   for (int id = IDC_RADIOBLACK; id <= IDC_RADIOGREEN; id++)
   {
      CButton* button = (CButton*)GetDlgItem(id);
      if (button->GetCheck() == 1)
      {
         m_radioColor = id - IDC_RADIOBLACK;
         break;
      }
   }

   return CPropertyPage::OnWizardBack();
}

CPropertyPage::OnWizardFinish

Diese Memberfunktion wird vom Framework aufgerufen, wenn der Benutzer die Schaltfläche "Fertig stellen " in einem Assistenten auswählt.

virtual BOOL OnWizardFinish();

Rückgabewert

Nonzero, wenn das Eigenschaftenblatt zerstört wird, wenn der Assistent abgeschlossen ist; andernfalls 0.

Hinweise

Wenn ein Benutzer die Schaltfläche "Fertig stellen " in einem Assistenten auswählt, ruft das Framework diese Funktion auf. Wenn OnWizardFinish diese TRUE Funktion zurückgegeben wird (ein Wert ungleich Null), kann das Eigenschaftenblatt zerstört werden (wird aber nicht tatsächlich zerstört). Rufen Sie DestroyWindow auf, um das Eigenschaftenblatt zu zerstören. Rufen Sie nicht von DestroyWindowOnWizardFinish. Dies führt zu Heapbeschädigungen oder anderen Fehlern.

Sie können diese Memberfunktion überschreiben, um eine Aktion anzugeben, die der Benutzer ausführen muss, wenn die Schaltfläche "Fertig stellen " gedrückt wird. Wenn Sie diese Funktion überschreiben, kehren Sie zurück FALSE , um zu verhindern, dass das Eigenschaftenblatt zerstört wird.

Weitere Informationen zu Benachrichtigungen, die gesendet werden, wenn der Benutzer die Schaltfläche "Fertig stellen " in einem Eigenschaftenblatt eines Assistenten drückt, finden Sie im PSN_WIZFINISH Windows SDK.

Weitere Informationen zum Erstellen eines Eigenschaftenblatts vom Assistententyp finden Sie unter CPropertySheet::SetWizardMode.

Beispiel

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

CPropertyPage::OnWizardNext

Diese Memberfunktion wird vom Framework aufgerufen, wenn der Benutzer die Schaltfläche "Weiter " in einem Assistenten auswählt.

virtual LRESULT OnWizardNext();

Rückgabewert

0, um automatisch zur nächsten Seite zu wechseln; -1, um zu verhindern, dass die Seite geändert wird. Um zu einer anderen Seite als dem nächsten zu springen, geben Sie den Bezeichner des anzuzeigenden Dialogfelds zurück.

Hinweise

Überschreiben Sie diese Memberfunktion, um eine Aktion anzugeben, die der Benutzer ausführen muss, wenn die Schaltfläche "Weiter " gedrückt wird.

Weitere Informationen zum Erstellen eines Eigenschaftenblatts vom Assistententyp finden Sie unter CPropertySheet::SetWizardMode.

Beispiel

// The Next button is selected from the propertysheet. Show the 
// second page of the propertysheet ONLY if a non-zero value is 
// entered to the Number edit control of the CStylePage. Otherwise
// display a message to the user and stay on the current page.

LRESULT CStylePage::OnWizardNext()
{
   // Get the number from the edit control
   int num = GetDlgItemInt(IDC_NUMOBJECTS);

   if (num == 0)
   {
      // Display a message to the user
      AfxMessageBox(_T("Supply a non-zero number on the edit control"), MB_OK);

      // Stay on the current page
      return -1;
   }

   // CPropertyPage::OnWizardNext returns zero and causes
   // the property sheet to display the next page
   return CPropertyPage::OnWizardNext();
}

CPropertyPage::QuerySiblings

Rufen Sie diese Memberfunktion auf, um eine Nachricht an jede Seite im Eigenschaftenblatt weiterzuleiten.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Parameter

wParam
Gibt zusätzliche nachrichtenabhängige Informationen an.

lParam
Gibt zusätzliche nachrichtenabhängige Informationen an.

Rückgabewert

Der Wert ungleich Null von einer Seite im Eigenschaftenblatt oder 0, wenn alle Seiten den Wert 0 zurückgeben.

Hinweise

Wenn eine Seite einen Wert ungleich Null zurückgibt, sendet das Eigenschaftenblatt die Nachricht nicht an nachfolgende Seiten.

Beispiel

// Validate the value entered in the Number edit control. If its 
// value is not a natural number, request CPropertySheet (i.e. parent
// window of the page) to send a PSM_QUERYSIBLINGS message to each
// LOADED page (a page won't be loaded in memory until it is shown).
// If one of the pages returns a nonzero value in response to the 
// PSM_QUERYSIBLINGS message, then inform the user and change the OK
// to Close and disable the Cancel button. CStylePage is a 
// CPropertyPage-derived class.
BOOL CStylePage::OnApply()
{
   int num = GetDlgItemInt(IDC_NUMOBJECTS);
   if (num <= 0)
   {
      if (QuerySiblings(num, 0L))
      {
         AfxMessageBox(_T("Invalid data is entered.  Choose Close ")
            _T("button to close the dialog."));
         CancelToClose();
      }
   }

   return CPropertyPage::OnApply();
}

 

// This is an example of trapping the PSM_QUERYSIBLINGS in one of
// the pages. CColorPage is a CPropertyPage-derived class.  Upon 
// receiving this message, wParam contains the value passed to 
// QuerySiblings() call. CColorPage will check this value and return
// FALSE only if the value is greater than 1.
ON_MESSAGE(PSM_QUERYSIBLINGS, &CColorPage::OnQuerySiblings)

 

LRESULT CColorPage::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
   UNREFERENCED_PARAMETER(lParam);
   return (wParam <= 0);
}

CPropertyPage::SetModified

Rufen Sie diese Memberfunktion auf, um die Schaltfläche "Jetzt anwenden" zu aktivieren oder zu deaktivieren, je nachdem, ob die Einstellungen auf der Eigenschaftenseite auf das entsprechende externe Objekt angewendet werden sollen.

void SetModified(BOOL bChanged = TRUE);

Parameter

bChanged
TRUE um anzugeben, dass die Eigenschaftenseiteneinstellungen seit der letzten Anwendung geändert wurden; FALSE um anzugeben, dass die Eigenschaftenseiteneinstellungen angewendet wurden oder ignoriert werden sollten.

Hinweise

Das Framework verfolgt, welche Seiten "modifiziert" sind, d. h. Eigenschaftenseiten, für die Sie aufgerufen SetModified( TRUE )haben. Die Schaltfläche "Jetzt anwenden " wird immer aktiviert, wenn Sie eine der Seiten aufrufen SetModified( TRUE ) . Die Schaltfläche "Jetzt anwenden" wird deaktiviert, wenn Sie eine der Seiten aufrufenSetModified( FALSE ), aber nur, wenn keine der anderen Seiten "modifiziert" lautet.

Beispiel

// OnColorClicked() is a member function of CColorPage (a
// CPropertyPage-derived class). It is called whenever a radio button
// is selected on the page. Call SetModified() to enable the Apply 
// button whenever a new selection is made. m_Color is a member
// variable of CColorPage and it is to store the selected RGB color.
// Its entry in the message map looks like this:
// ON_CONTROL_RANGE(BN_CLICKED, IDC_BLACK, IDC_GREEN, CColorPage::OnColorClicked)
void CColorPage::OnColorClicked(UINT nCmdID)
{
   COLORREF color = m_Color;
   switch (nCmdID)
   {
   case IDC_RADIOBLACK:
      color = RGB(0, 0, 0);
      m_radioColor = crBlack;
      break;

   case IDC_RADIORED:
      color = RGB(255, 0, 0);
      m_radioColor = crRed;
      break;

   case IDC_RADIOGREEN:
      color = RGB(0, 255, 0);
      m_radioColor = crGreen;
      break;

   case IDC_RADIOBLUE:
      color = RGB(0, 0, 255);
      m_radioColor = crBlue;
      break;
   }

   if (color != m_Color)
   {
      m_Color = color;
      SetModified();    // Enable Apply Now button.
   }

   UpdateData(FALSE);
}

Siehe auch

MFC-Beispiel CMNCTRL1
MFC-Beispiel CMNCTRL2
MFC-Beispiel PROPDLG
MFC-Beispiel SNAPVW
CDialog Klasse
Hierarchiediagramm
CPropertySheet Klasse