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
CPropertyPage
Anforderungen
Header: afxdlgs.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::AddPage
Eigenschaftenblatts zu einem Eigenschaftenblatt hinzugefügt.Das Eigenschaftenblatt
DoModal
oderCreate
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 NULL
sein.
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::AddPage
Eigenschaftenblatts zu einem Eigenschaftenblatt hinzugefügt.Das Eigenschaftenblatt
DoModal
oderCreate
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 TRUE
festgelegt 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
ruft OnOK
auf.
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 vorgenommen hat, die Schaltfläche "Jetzt anwenden " verworfen, 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 DestroyWindow
OnWizardFinish
. 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 "schmutzig" 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 aufrufen SetModified( FALSE )
, aber nur, wenn keine der anderen Seiten "schmutzig" ist.
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