Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Vertegenwoordigt afzonderlijke pagina's van een eigenschappenvenster, ook wel een tabbladdialoogvenster genoemd.
Syntaxis
class CPropertyPage : public CDialog
Leden
Openbare constructors
| Naam | Description |
|---|---|
CPropertyPage::CPropertyPage |
Maakt een CPropertyPage object. |
Openbare methoden
| Naam | Description |
|---|---|
CPropertyPage::CancelToClose |
Hiermee wijzigt u de knop OK om Sluiten te lezen en schakelt u de knop Annuleren uit, na een onherstelbare wijziging op de pagina van een modaal eigenschappenvenster. |
CPropertyPage::Construct |
Maakt een CPropertyPage object. Gebruik Construct deze optie als u uw parameters tijdens runtime wilt opgeven of als u matrices gebruikt. |
CPropertyPage::GetPSP |
Haalt de Windows-structuur PROPSHEETPAGE op die aan het CPropertyPage object is gekoppeld. |
CPropertyPage::OnApply |
Wordt aangeroepen door het framework wanneer op de knop Nu toepassen wordt geklikt. |
CPropertyPage::OnCancel |
Wordt aangeroepen door het framework wanneer op de knop Annuleren wordt geklikt. |
CPropertyPage::OnKillActive |
Aangeroepen door het framework wanneer de huidige pagina niet langer de actieve pagina is. Voer hier gegevensvalidatie uit. |
CPropertyPage::OnOK |
Wordt aangeroepen door het framework wanneer op de knop OK, Nu toepassen of Sluiten wordt geklikt. |
CPropertyPage::OnQueryCancel |
Wordt aangeroepen door het framework wanneer op de knop Annuleren wordt geklikt en voordat de annulering heeft plaatsgevonden. |
CPropertyPage::OnReset |
Wordt aangeroepen door het framework wanneer op de knop Annuleren wordt geklikt. |
CPropertyPage::OnSetActive |
Aangeroepen door het framework wanneer de pagina de actieve pagina wordt gemaakt. |
CPropertyPage::OnWizardBack |
Aangeroepen door het framework wanneer op de knop Vorige wordt geklikt tijdens het gebruik van een eigenschappenvenster van het wizardtype. |
CPropertyPage::OnWizardFinish |
Aangeroepen door het framework wanneer op de knop Voltooien wordt geklikt tijdens het gebruik van een eigenschappenvenster van het wizardtype. |
CPropertyPage::OnWizardNext |
Aangeroepen door het framework wanneer op de knop Volgende wordt geklikt tijdens het gebruik van een eigenschappenvenster van het wizardtype. |
CPropertyPage::QuerySiblings |
Stuurt het bericht door naar elke pagina van het eigenschappenvenster. |
CPropertyPage::SetModified |
Oproep om de knop Nu toepassen te activeren of deactiveren. |
Leden van openbare gegevens
| Naam | Description |
|---|---|
CPropertyPage::m_psp |
De Windows-structuur PROPSHEETPAGE . Biedt toegang tot basisparameters voor eigenschappenpagina's. |
Opmerkingen
Net als bij standaarddialoogvensters hebt u een klasse afgeleid van CPropertyPage elke pagina in het eigenschappenvenster. Als u -afgeleide objecten wilt gebruiken CPropertyPage, maakt u eerst een CPropertySheet object en maakt u vervolgens een object voor elke pagina die in het eigenschappenvenster wordt geplaatst. Roep CPropertySheet::AddPage elke pagina in het blad aan en geef vervolgens het eigenschappenvenster weer door een modaal eigenschappenvenster of CPropertySheet::Create voor een modusloos eigenschappenvenster aan te roepenCPropertySheet::DoModal.
U kunt een type tabbladdialoogvenster maken dat een wizard wordt genoemd, die bestaat uit een eigenschappenvenster met een reeks eigenschappenpagina's waarmee de gebruiker de stappen van een bewerking doorloopt, zoals het instellen van een apparaat of het maken van een nieuwsbrief. In een dialoogvenster van het wizardtypetabblad hebben de eigenschappenpagina's geen tabbladen en is er slechts één eigenschappenpagina tegelijk zichtbaar. In plaats van de knoppen OK en Nu toepassen te hebben, heeft een wizardtabvenster een knop Vorige , een knop Volgende of Voltooien en een knop Annuleren .
Zie voor meer informatie over het instellen van een eigenschappenvenster als wizard CPropertySheet::SetWizardMode. Zie het artikel Eigenschappenvensters en Eigenschappenpagina's voor meer informatie over het gebruik van CPropertyPage objecten.
Overnamehiërarchie
CPropertyPage
Requirements
Rubriek:afxdlgs.h
CPropertyPage::CancelToClose
Roep deze functie aan nadat een onherstelbare wijziging is aangebracht in de gegevens op een pagina van een modaal eigenschappenvenster.
void CancelToClose();
Opmerkingen
Met deze functie wordt de knop OK gewijzigd om de knop Annuleren te sluiten en uit te schakelen. Deze wijziging waarschuwt de gebruiker dat een wijziging permanent is en de wijzigingen niet kunnen worden geannuleerd.
De CancelToClose lidfunctie doet niets in een eigenschappenvenster zonder modus, omdat een eigenschappenvenster zonder modus standaard geen knop Annuleren heeft.
Example
Zie het voorbeeld voor CPropertyPage::QuerySiblings.
CPropertyPage::Construct
Roep deze lidfunctie aan om een CPropertyPage object te maken.
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);
Parameterwaarden
nIDTemplate
Id van de sjabloon die voor deze pagina wordt gebruikt.
nIDCaption
Id van de naam die moet worden geplaatst op het tabblad voor deze pagina. Als 0, wordt de naam opgehaald uit de dialoogvenstersjabloon voor deze pagina.
lpszTemplateName
Bevat een door null beëindigde tekenreeks die de naam is van een sjabloonresource.
nIDHeaderTitle
Id van de naam die moet worden geplaatst op de titellocatie van de koptekst van de eigenschappenpagina. Standaard 0.
nIDHeaderSubTitle
Id van de naam die moet worden geplaatst op de subtitellocatie van de koptekst van de eigenschappenpagina. Standaard 0.
Opmerkingen
Het object wordt weergegeven nadat aan alle volgende voorwaarden is voldaan:
De pagina is toegevoegd aan een eigenschappenvenster met behulp van
CPropertySheet::AddPage.Het eigenschappenvenster
DoModalof deCreatefunctie is aangeroepen.De gebruiker heeft deze pagina geselecteerd (met tabbladen).
Aanroepen Construct als een van de andere klasseconstructors niet is aangeroepen. De Construct lidfunctie is flexibel omdat u de parameterinstructie leeg kunt laten en vervolgens meerdere parameters en constructie op elk punt in uw code kunt opgeven.
U moet gebruiken wanneer u met matrices werkt en u moet elk lid van de matrix aanroepen ConstructConstruct , zodat de gegevensleden de juiste waarden krijgen toegewezen.
Example
// 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
Maakt een CPropertyPage object.
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));
Parameterwaarden
nIDTemplate
Id van de sjabloon die voor deze pagina wordt gebruikt.
nIDCaption
Id van de naam die moet worden geplaatst op het tabblad voor deze pagina. Als 0, wordt de naam opgehaald uit de dialoogvenstersjabloon voor deze pagina.
dwSize
lpszTemplateName Verwijst naar een tekenreeks met de naam van de sjabloon voor deze pagina. Kan niet NULL zijn.
nIDHeaderTitle
Id van de naam die moet worden geplaatst op de titellocatie van de koptekst van de eigenschappenpagina.
nIDHeaderSubTitle
Id van de naam die moet worden geplaatst op de subtitellocatie van de koptekst van de eigenschappenpagina.
Opmerkingen
Het object wordt weergegeven nadat aan alle volgende voorwaarden is voldaan:
De pagina is toegevoegd aan een eigenschappenvenster met behulp van
CPropertySheet::AddPage.Het eigenschappenvenster
DoModalof deCreatefunctie is aangeroepen.De gebruiker heeft deze pagina geselecteerd (met tabbladen).
Als u meerdere parameters hebt (bijvoorbeeld als u een matrix gebruikt), gebruikt CPropertySheet::Construct u in plaats van CPropertyPage.
Example
// 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
Haalt de Windows-structuur PROPSHEETPAGE op die aan het CPropertyPage object is gekoppeld.
const PROPSHEETPAGE& GetPSP() const;
PROPSHEETPAGE& GetPSP();
Retourwaarde
Een verwijzing naar de PROPSHEETPAGE structuur.
CPropertyPage::m_psp
m_psp is een structuur waarvan leden de kenmerken van PROPSHEETPAGE.
PROPSHEETPAGE m_psp;
Opmerkingen
Gebruik deze structuur om het uiterlijk van een eigenschappenpagina te initialiseren nadat deze is samengesteld.
Zie de Windows SDK voor meer informatie over deze structuur, inclusief een lijst met leden PROPSHEETPAGE .
Example
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
Deze lidfunctie wordt aangeroepen door het framework wanneer de gebruiker de knop OK of Nu toepassen kiest.
virtual BOOL OnApply();
Retourwaarde
Niet-nul als de wijzigingen worden geaccepteerd; anders 0.
Opmerkingen
Wanneer het framework deze functie aanroept, worden wijzigingen die zijn aangebracht op alle eigenschappenpagina's in het eigenschappenvenster geaccepteerd, behoudt het eigenschappenvenster de focus en OnApply retourneert TRUE (de waarde 1). Voordat OnApply u het framework kunt aangeroepen, moet u de parameter hebben aangeroepen SetModified en ingesteld op TRUE. Hiermee wordt de knop Nu toepassen geactiveerd zodra de gebruiker een wijziging aanbrengt op de eigenschappenpagina.
Overschrijf deze lidfunctie om op te geven welke actie uw programma uitvoert wanneer de gebruiker de knop Nu toepassen selecteert. Wanneer de functie wordt overschreven, moet de functie terugkeren TRUE om wijzigingen te accepteren en FALSE te voorkomen dat wijzigingen van kracht worden.
De standaard implementatie van OnApply aanroepen OnOK.
Zie de Windows SDK voor meer informatie over meldingsberichten die worden verzonden wanneer de gebruiker op de knop Nu toepassen of OK drukt in een eigenschappenvenster PSN_APPLY .
Example
Zie het voorbeeld voor CPropertyPage::OnOK.
CPropertyPage::OnCancel
Deze lidfunctie wordt aangeroepen door het framework wanneer de knop Annuleren is geselecteerd.
virtual void OnCancel();
Opmerkingen
Overschrijf deze lidfunctie om knopacties annuleren uit te voeren. De standaardinstelling negeert alle wijzigingen die zijn aangebracht.
Example
// 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
Deze lidfunctie wordt aangeroepen door het framework wanneer de pagina niet langer de actieve pagina is.
virtual BOOL OnKillActive();
Retourwaarde
Niet-nul als de gegevens zijn bijgewerkt, anders 0.
Opmerkingen
Overschrijf deze lidfunctie om speciale gegevensvalidatietaken uit te voeren.
Met de standaard implementatie van deze lidfunctie worden instellingen gekopieerd van de besturingselementen op de eigenschappenpagina naar de lidvariabelen van de eigenschappenpagina. Als de gegevens niet zijn bijgewerkt vanwege een DDV-fout (Dialog Data Validation), blijft de focus op de pagina behouden.
Nadat deze lidfunctie is geretourneerd, roept het framework de functie van OnOK de pagina aan.
Example
// 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
Deze lidfunctie wordt aangeroepen door het framework wanneer de gebruiker de knop OK of Nu toepassen kiest, direct na het aanroepen OnKillActivevan het framework.
virtual void OnOK();
Opmerkingen
Wanneer de gebruiker de knop OK of Nu toepassen kiest, ontvangt het framework de PSN_APPLY melding van de eigenschappenpagina. De aanroep wordt OnOK niet uitgevoerd als u belt CPropertySheet::PressButton omdat de eigenschappenpagina de melding in dat geval niet verzendt.
Overschrijf deze lidfunctie om extra gedrag te implementeren dat specifiek is voor de huidige actieve pagina wanneer de gebruiker het hele eigenschappenvenster negeert.
De standaard implementatie van deze lidfunctie markeert de pagina als 'schoon' om aan te geven dat de gegevens in de OnKillActive functie zijn bijgewerkt.
Example
// 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
Deze lidfunctie wordt aangeroepen door het framework wanneer de gebruiker de knop Annuleren selecteert en voordat de actie Annuleren heeft plaatsgevonden.
virtual BOOL OnQueryCancel();
Retourwaarde
Retourneert FALSE om te voorkomen dat de annuleringsbewerking wordt uitgevoerd of TRUE om deze toe te staan.
Opmerkingen
Overschrijf deze lidfunctie om een actie op te geven die het programma uitvoert wanneer de gebruiker de knop Annuleren selecteert.
De standaard implementatie van OnQueryCancel retourneert TRUE.
Example
// 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
Deze lidfunctie wordt aangeroepen door het framework wanneer de gebruiker de knop Annuleren kiest.
virtual void OnReset();
Opmerkingen
Wanneer dit framework deze functie aanroept, worden wijzigingen in alle eigenschappenpagina's die door de gebruiker zijn aangebracht eerder de knop Nu toepassen verwijderd en behoudt het eigenschappenvenster de focus.
Overschrijf deze lidfunctie om op te geven welke actie het programma uitvoert wanneer de gebruiker de knop Annuleren selecteert.
De standaard implementatie van OnReset doet niets.
Example
Zie het voorbeeld voor CPropertyPage::OnCancel.
CPropertyPage::OnSetActive
Deze lidfunctie wordt aangeroepen door het framework wanneer de pagina door de gebruiker wordt gekozen en de actieve pagina wordt.
virtual BOOL OnSetActive();
Retourwaarde
Niet-nul als de pagina actief is ingesteld; anders 0.
Opmerkingen
Overschrijf deze lidfunctie om taken uit te voeren wanneer een pagina wordt geactiveerd. Uw onderdrukking van deze lidfunctie roept doorgaans de standaardversie aan na het bijwerken van gegevensleden, zodat deze de paginabesturingselementen kan bijwerken met de nieuwe gegevens.
De standaard implementatie maakt het venster voor de pagina, indien niet eerder gemaakt, en maakt het de actieve pagina.
Example
Zie het voorbeeld voor CPropertySheet::SetFinishText.
CPropertyPage::OnWizardBack
Deze lidfunctie wordt aangeroepen door het framework wanneer de gebruiker de knop Vorige in een wizard selecteert.
virtual LRESULT OnWizardBack();
Retourwaarde
0 om automatisch naar de volgende pagina te gaan; -1 om te voorkomen dat de pagina wordt gewijzigd. Als u naar een andere pagina dan de volgende pagina wilt gaan, retourneert u de id van het dialoogvenster dat moet worden weergegeven.
Opmerkingen
Overschrijf deze lidfunctie om een actie op te geven die de gebruiker moet uitvoeren wanneer de knop Terug wordt ingedrukt.
Zie voor meer informatie over het maken van een eigenschappenvenster CPropertySheet::SetWizardModevan het wizardtype.
Example
// 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
Deze lidfunctie wordt aangeroepen door het framework wanneer de gebruiker de knop Voltooien in een wizard selecteert.
virtual BOOL OnWizardFinish();
Retourwaarde
Niet-nul als het eigenschappenvenster wordt vernietigd wanneer de wizard is voltooid; anders nul.
Opmerkingen
Wanneer een gebruiker de knop Voltooien in een wizard selecteert, roept het framework deze functie aan; wanneer OnWizardFinish retourneert TRUE (een niet-nulwaarde), kan het eigenschappenvenster worden vernietigd (maar wordt niet daadwerkelijk vernietigd). Oproep DestroyWindow om het eigenschappenvenster te vernietigen. Bel niet DestroyWindow van OnWizardFinish; als u dit doet, leidt dit tot heap-beschadiging of andere fouten.
U kunt deze lidfunctie overschrijven om een actie op te geven die de gebruiker moet uitvoeren wanneer de knop Voltooien wordt ingedrukt. Wanneer u deze functie overschrijft, keert u terug FALSE om te voorkomen dat het eigenschappenvenster wordt vernietigd.
Zie de Windows SDK voor meer informatie over meldingsberichten die worden verzonden wanneer de gebruiker op de knop Voltooien in een eigenschappenvenster PSN_WIZFINISH van een wizard drukt.
Zie voor meer informatie over het maken van een eigenschappenvenster CPropertySheet::SetWizardModevan het wizardtype.
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);
}
CPropertyPage::OnWizardNext
Deze lidfunctie wordt aangeroepen door het framework wanneer de gebruiker de knop Volgende in een wizard selecteert.
virtual LRESULT OnWizardNext();
Retourwaarde
0 om automatisch naar de volgende pagina te gaan; -1 om te voorkomen dat de pagina wordt gewijzigd. Als u naar een andere pagina dan de volgende pagina wilt gaan, retourneert u de id van het dialoogvenster dat moet worden weergegeven.
Opmerkingen
Overschrijf deze lidfunctie om een actie op te geven die de gebruiker moet uitvoeren wanneer op de knop Volgende wordt gedrukt.
Zie voor meer informatie over het maken van een eigenschappenvenster CPropertySheet::SetWizardModevan het wizardtype.
Example
// 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
Roep deze lidfunctie aan om een bericht door te sturen naar elke pagina in het eigenschappenvenster.
LRESULT QuerySiblings(
WPARAM wParam,
LPARAM lParam);
Parameterwaarden
wParam
Hiermee geeft u aanvullende berichtafhankelijke informatie op.
lParam
Hiermee geeft u aanvullende berichtafhankelijke informatie op
Retourwaarde
De niet-nulwaarde van een pagina in het eigenschappenvenster of 0 als alle pagina's een waarde van 0 retourneren.
Opmerkingen
Als een pagina een niet-nulwaarde retourneert, verzendt het eigenschappenvenster het bericht niet naar de volgende pagina's.
Example
// 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
Roep deze lidfunctie aan om de knop Nu toepassen in of uit te schakelen, op basis van of de instellingen op de eigenschappenpagina moeten worden toegepast op het juiste externe object.
void SetModified(BOOL bChanged = TRUE);
Parameterwaarden
bChanged
TRUE om aan te geven dat de instellingen van de eigenschappenpagina zijn gewijzigd sinds de laatste keer dat ze zijn toegepast; FALSE om aan te geven dat de instellingen van de eigenschappenpagina zijn toegepast of moeten worden genegeerd.
Opmerkingen
Het framework houdt bij welke pagina's 'vuil' zijn, dat wil gezegd eigenschapspagina's waarvoor u hebt aangeroepen SetModified( TRUE ). De knop Nu toepassen wordt altijd ingeschakeld als u een van de pagina's aanroept SetModified( TRUE ) . De knop Nu toepassen wordt uitgeschakeld wanneer u een van de pagina's belt SetModified( FALSE ) , maar alleen als geen van de andere pagina's 'vuil' is.
Example
// 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);
}
Zie ook
MFC-voorbeeld CMNCTRL1
MFC-voorbeeld CMNCTRL2
MFC-voorbeeld PROPDLG
MFC-voorbeeld SNAPVW
CDialog klasse
Hiërarchiegrafiek
CPropertySheet klasse