Share via


CPropertyPage-klasse

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

CObject

CCmdTarget

CWnd

CDialog

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 DoModal of de Create functie 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 DoModal of de Create functie 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