Partager via


La classe CPropertyPage

Représente des pages individuelles d'une feuille de propriétés, aussi connu sous le nom de boîte de dialogue d'onglet.

Syntaxe

class CPropertyPage : public CDialog

Membres

Constructeurs publics

Nom Description
CPropertyPage::CPropertyPage Construit un objet CPropertyPage.

Méthodes publiques

Nom Description
CPropertyPage::CancelToClose Modifie le bouton OK pour lire Fermer et désactive le bouton Annuler , après une modification irrécupérable dans la page d’une feuille de propriétés modale.
CPropertyPage::Construct Construit un objet CPropertyPage. Utilisez Construct si vous souhaitez spécifier vos paramètres au moment de l’exécution ou si vous utilisez des tableaux.
CPropertyPage::GetPSP Récupère la structure Windows PROPSHEETPAGE associée à l’objet CPropertyPage .
CPropertyPage::OnApply Appelé par l’infrastructure lorsque le bouton Appliquer maintenant est cliqué.
CPropertyPage::OnCancel Appelé par l’infrastructure lorsque le bouton Annuler est cliqué.
CPropertyPage::OnKillActive Appelé par l’infrastructure lorsque la page active n’est plus la page active. Effectuez la validation des données ici.
CPropertyPage::OnOK Appelé par l’infrastructure lorsque le bouton OK, Appliquer maintenant ou Fermer est cliqué.
CPropertyPage::OnQueryCancel Appelé par l’infrastructure lorsque le bouton Annuler est cliqué et avant que l’annulation ait eu lieu.
CPropertyPage::OnReset Appelé par l’infrastructure lorsque le bouton Annuler est cliqué.
CPropertyPage::OnSetActive Appelé par l’infrastructure lorsque la page est rendue active.
CPropertyPage::OnWizardBack Appelé par l’infrastructure lorsque le bouton Précédent est cliqué lors de l’utilisation d’une feuille de propriétés de type Assistant.
CPropertyPage::OnWizardFinish Appelé par l’infrastructure lorsque le bouton Terminer est cliqué lors de l’utilisation d’une feuille de propriétés de type Assistant.
CPropertyPage::OnWizardNext Appelé par l’infrastructure lorsque le bouton Suivant est cliqué lors de l’utilisation d’une feuille de propriétés de type Assistant.
CPropertyPage::QuerySiblings Transfère le message à chaque page de la feuille de propriétés.
CPropertyPage::SetModified Appelez pour activer ou désactiver le bouton Appliquer maintenant .

Membres de données publics

Nom Description
CPropertyPage::m_psp Structure Windows PROPSHEETPAGE . Fournit l’accès aux paramètres de page de propriétés de base.

Notes

Comme avec les boîtes de dialogue standard, vous dérivez une classe de CPropertyPage chaque page de votre feuille de propriétés. Pour utiliser CPropertyPagedes objets dérivés, commencez par créer un CPropertySheet objet, puis créez un objet pour chaque page qui se trouve dans la feuille de propriétés. Appelez CPropertySheet::AddPage chaque page de la feuille, puis affichez la feuille de propriétés en appelant CPropertySheet::DoModal une feuille de propriétés modale ou CPropertySheet::Create pour une feuille de propriétés sans mode.

Vous pouvez créer un type de boîte de dialogue d’onglet appelé Assistant, qui se compose d’une feuille de propriétés avec une séquence de pages de propriétés qui guident l’utilisateur tout au long des étapes d’une opération, telles que la configuration d’un appareil ou la création d’un bulletin d’informations. Dans une boîte de dialogue d’onglet de type Assistant, les pages de propriétés n’ont pas d’onglets et une seule page de propriétés est visible à la fois. En outre, au lieu d’avoir des boutons OK et Appliquer maintenant , une boîte de dialogue Onglet de type Assistant a un bouton Précédent , un bouton Suivant ou Terminer et un bouton Annuler .

Pour plus d’informations sur l’établissement d’une feuille de propriétés en tant qu’Assistant, consultez CPropertySheet::SetWizardMode. Pour plus d’informations sur l’utilisation d’objets CPropertyPage , consultez l’article Feuilles de propriétés et Pages de propriétés.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Spécifications

En-tête : afxdlgs.h

CPropertyPage::CancelToClose

Appelez cette fonction une fois qu’une modification irrécupérable a été apportée aux données dans une page d’une feuille de propriétés modale.

void CancelToClose();

Notes

Cette fonction modifie le bouton OK pour fermer et désactiver le bouton Annuler . Cette modification avertit l’utilisateur qu’une modification est permanente et que les modifications ne peuvent pas être annulées.

La CancelToClose fonction membre ne fait rien dans une feuille de propriétés sans mode, car une feuille de propriétés sans mode n’a pas de bouton Annuler par défaut.

Exemple

Consultez l’exemple de CPropertyPage ::QuerySiblings.

CPropertyPage::Construct

Appelez cette fonction membre pour construire un CPropertyPage objet.

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

Paramètres

nIDTemplate
ID du modèle utilisé pour cette page.

nIDCaption
ID du nom à placer dans l’onglet de cette page. Si 0, le nom est extrait du modèle de boîte de dialogue de cette page.

lpszTemplateName
Contient une chaîne terminée par null qui est le nom d’une ressource de modèle.

nIDHeaderTitle
ID du nom à placer dans l’emplacement de titre de l’en-tête de page de propriété. Par défaut, 0.

nIDHeaderSubTitle
ID du nom à placer à l’emplacement du sous-titre de l’en-tête de page de propriété. Par défaut, 0.

Notes

L’objet s’affiche une fois que toutes les conditions suivantes sont remplies :

  • La page a été ajoutée à une feuille de propriétés à l’aide CPropertySheet::AddPagede .

  • La feuille de DoModal propriétés ou Create la fonction a été appelée.

  • L’utilisateur a sélectionné (tabulation vers) cette page.

Appelez Construct si l’un des autres constructeurs de classe n’a pas été appelé. La Construct fonction membre est flexible, car vous pouvez laisser l’instruction de paramètre vide, puis spécifier plusieurs paramètres et construction à tout moment dans votre code.

Vous devez utiliser Construct lorsque vous travaillez avec des tableaux, et vous devez appeler Construct chaque membre du tableau afin que les membres de données reçoivent des valeurs appropriées.

Exemple

// 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

Construit un objet CPropertyPage.

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

Paramètres

nIDTemplate
ID du modèle utilisé pour cette page.

nIDCaption
ID du nom à placer dans l’onglet de cette page. Si 0, le nom est extrait du modèle de boîte de dialogue de cette page.

dwSize
lpszTemplateName Pointe vers une chaîne contenant le nom du modèle pour cette page. Ne peut pas être NULL.

nIDHeaderTitle
ID du nom à placer dans l’emplacement de titre de l’en-tête de page de propriété.

nIDHeaderSubTitle
ID du nom à placer à l’emplacement du sous-titre de l’en-tête de page de propriété.

Notes

L’objet s’affiche une fois que toutes les conditions suivantes sont remplies :

  • La page a été ajoutée à une feuille de propriétés à l’aide CPropertySheet::AddPagede .

  • La feuille de DoModal propriétés ou Create la fonction a été appelée.

  • L’utilisateur a sélectionné (tabulation vers) cette page.

Si vous avez plusieurs paramètres (par exemple, si vous utilisez un tableau), utilisez CPropertySheet::Construct plutôt CPropertyPageque .

Exemple

// 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

Récupère la structure Windows PROPSHEETPAGE associée à l’objet CPropertyPage .

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Valeur de retour

Référence à la PROPSHEETPAGE structure.

CPropertyPage::m_psp

m_pspest une structure dont les membres stockent les caractéristiques .PROPSHEETPAGE

PROPSHEETPAGE m_psp;

Notes

Utilisez cette structure pour initialiser l’apparence d’une page de propriétés après sa construction.

Pour plus d’informations sur cette structure, notamment une liste de ses membres, consultez PROPSHEETPAGE le Kit de développement logiciel (SDK) Windows.

Exemple

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

Cette fonction membre est appelée par l’infrastructure lorsque l’utilisateur choisit le OK ou le bouton Appliquer maintenant.

virtual BOOL OnApply();

Valeur de retour

Différent de zéro si les modifications sont acceptées ; sinon 0.

Notes

Lorsque l’infrastructure appelle cette fonction, les modifications apportées à toutes les pages de propriétés de la feuille de propriétés sont acceptées, la feuille de propriétés conserve le focus et OnApply retourne TRUE (la valeur 1). Avant OnApply de pouvoir être appelé par l’infrastructure, vous devez avoir appelé SetModified et définir son paramètre TRUEsur . Cela active le bouton Appliquer maintenant dès que l’utilisateur apporte une modification à la page de propriétés.

Remplacez cette fonction membre pour spécifier l’action que votre programme effectue lorsque l’utilisateur sélectionne le bouton Appliquer maintenant . En cas de substitution, la fonction doit revenir TRUE pour accepter les modifications et FALSE empêcher les modifications de prendre effet.

L’implémentation par défaut de OnApply utilise OnOK.

Pour plus d’informations sur les messages de notification envoyés lorsque l’utilisateur appuie sur le bouton Appliquer maintenant ou OK dans une feuille de propriétés, consultez PSN_APPLY le Kit de développement logiciel (SDK) Windows.

Exemple

Consultez l’exemple de CPropertyPage ::OnOK.

CPropertyPage::OnCancel

Cette fonction membre est appelée par l’infrastructure lorsque le bouton Annuler est sélectionné.

virtual void OnCancel();

Notes

Remplacez cette fonction membre pour effectuer des actions de bouton Annuler . La valeur par défaut annule toutes les modifications qui ont été apportées.

Exemple

// 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

Cette fonction membre est appelée par l’infrastructure lorsque la page n’est plus la page active.

virtual BOOL OnKillActive();

Valeur de retour

Différent de zéro si les données ont été mises à jour correctement, sinon 0.

Notes

Remplacez cette fonction membre pour effectuer des tâches de validation de données spéciales.

L’implémentation par défaut de cette fonction membre copie les paramètres des contrôles de la page de propriétés vers les variables membres de la page de propriétés. Si les données n’ont pas été mises à jour correctement en raison d’une erreur de validation des données de boîte de dialogue (DDV), la page conserve le focus.

Une fois cette fonction membre retournée, l’infrastructure appelle la fonction de la OnOK page.

Exemple

// 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

Cette fonction membre est appelée par l’infrastructure lorsque l’utilisateur choisit l’OK ou le bouton Appliquer maintenant, immédiatement après les appels OnKillActivede l’infrastructure.

virtual void OnOK();

Notes

Lorsque l’utilisateur choisit l’OK ou le bouton Appliquer maintenant, l’infrastructure reçoit la PSN_APPLY notification de la page de propriétés. L’appel à OnOK ne sera pas effectué si vous appelez CPropertySheet::PressButton , car la page de propriétés n’envoie pas la notification dans ce cas.

Remplacez cette fonction membre pour implémenter un comportement supplémentaire spécifique à la page actuellement active lorsque l’utilisateur ignore la feuille de propriétés entière.

L’implémentation par défaut de cette fonction membre marque la page comme « propre » pour refléter que les données ont été mises à jour dans la OnKillActive fonction.

Exemple

// 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

Cette fonction membre est appelée par l’infrastructure lorsque l’utilisateur sélectionne le bouton Annuler et avant que l’action d’annulation ait eu lieu.

virtual BOOL OnQueryCancel();

Valeur de retour

Retourne FALSE pour empêcher l’opération d’annulation ou TRUE pour l’autoriser.

Notes

Remplacez cette fonction membre pour spécifier une action effectuée par le programme lorsque l’utilisateur sélectionne le bouton Annuler .

Implémentation par défaut des OnQueryCancel retours TRUE.

Exemple

// 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

Cette fonction membre est appelée par l’infrastructure lorsque l’utilisateur choisit le bouton Annuler .

virtual void OnReset();

Notes

Lorsque l’infrastructure appelle cette fonction, les modifications apportées à toutes les pages de propriétés effectuées par l’utilisateur qui choisissaient précédemment le bouton Appliquer maintenant sont ignorées et la feuille de propriétés conserve le focus.

Remplacez cette fonction membre pour spécifier l’action effectuée par le programme lorsque l’utilisateur sélectionne le bouton Annuler .

L’implémentation par défaut ne OnReset fait rien.

Exemple

Consultez l’exemple de CPropertyPage ::OnCancel.

CPropertyPage::OnSetActive

Cette fonction membre est appelée par l’infrastructure lorsque la page est choisie par l’utilisateur et devient la page active.

virtual BOOL OnSetActive();

Valeur de retour

Différent de zéro si la page a été correctement définie ; sinon 0.

Notes

Remplacez cette fonction membre pour effectuer des tâches lorsqu’une page est activée. Votre remplacement de cette fonction membre appelle généralement la version par défaut après la mise à jour des membres de données, pour lui permettre de mettre à jour les contrôles de page avec les nouvelles données.

L’implémentation par défaut crée la fenêtre de la page, si elle n’a pas été créée précédemment et la rend active.

Exemple

Consultez l’exemple de CPropertySheet ::SetFinishText.

CPropertyPage::OnWizardBack

Cette fonction membre est appelée par l’infrastructure lorsque l’utilisateur sélectionne le bouton Précédent dans un Assistant.

virtual LRESULT OnWizardBack();

Valeur de retour

0 pour passer automatiquement à la page suivante ; -1 pour empêcher la modification de la page. Pour accéder à une page autre que la suivante, retournez l’identificateur de la boîte de dialogue à afficher.

Notes

Remplacez cette fonction membre pour spécifier une action que l’utilisateur doit effectuer lorsque le bouton Précédent est enfoncé.

Pour plus d’informations sur la création d’une feuille de propriétés de type Assistant, consultez CPropertySheet::SetWizardMode.

Exemple

// 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

Cette fonction membre est appelée par l’infrastructure lorsque l’utilisateur sélectionne le bouton Terminer dans un Assistant.

virtual BOOL OnWizardFinish();

Valeur de retour

Différent de zéro si la feuille de propriétés est détruite lorsque l’Assistant se termine ; sinon zéro.

Notes

Lorsqu’un utilisateur sélectionne le bouton Terminer dans un Assistant, l’infrastructure appelle cette fonction ; lorsqu’elle OnWizardFinish est retournée TRUE (valeur différente de zéro), la feuille de propriétés est en mesure d’être détruite (mais n’est pas réellement détruite). Appelez DestroyWindow pour détruire la feuille de propriétés. N’appelez DestroyWindow OnWizardFinishpas de ; cela provoquera une altération du tas ou d’autres erreurs.

Vous pouvez remplacer cette fonction membre pour spécifier une action que l’utilisateur doit effectuer lorsque le bouton Terminer est enfoncé. En cas de substitution de cette fonction, revenez FALSE pour empêcher la destruction de la feuille de propriétés.

Pour plus d’informations sur les messages de notification envoyés lorsque l’utilisateur appuie sur le bouton Terminer dans une feuille de propriétés de l’Assistant, consultez PSN_WIZFINISH le Kit de développement logiciel (SDK) Windows.

Pour plus d’informations sur la création d’une feuille de propriétés de type Assistant, consultez CPropertySheet::SetWizardMode.

Exemple

// 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

Cette fonction membre est appelée par l’infrastructure lorsque l’utilisateur sélectionne le bouton Suivant dans un Assistant.

virtual LRESULT OnWizardNext();

Valeur de retour

0 pour passer automatiquement à la page suivante ; -1 pour empêcher la modification de la page. Pour accéder à une page autre que la suivante, retournez l’identificateur de la boîte de dialogue à afficher.

Notes

Remplacez cette fonction membre pour spécifier une action que l’utilisateur doit effectuer lorsque le bouton Suivant est enfoncé.

Pour plus d’informations sur la création d’une feuille de propriétés de type Assistant, consultez CPropertySheet::SetWizardMode.

Exemple

// 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

Appelez cette fonction membre pour transférer un message à chaque page de la feuille de propriétés.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Paramètres

wParam
Spécifie des informations supplémentaires dépendantes du message.

lParam
Spécifie des informations supplémentaires dépendantes du message

Valeur de retour

Valeur différente de zéro d’une page de la feuille de propriétés, ou 0 si toutes les pages retournent une valeur de 0.

Notes

Si une page retourne une valeur différente de zéro, la feuille de propriétés n’envoie pas le message aux pages suivantes.

Exemple

// 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

Appelez cette fonction membre pour activer ou désactiver le bouton Appliquer maintenant , selon que les paramètres de la page de propriétés doivent être appliqués à l’objet externe approprié.

void SetModified(BOOL bChanged = TRUE);

Paramètres

bChanged
TRUE pour indiquer que les paramètres de la page de propriétés ont été modifiés depuis la dernière fois qu’ils ont été appliqués ; FALSE pour indiquer que les paramètres de la page de propriétés ont été appliqués ou doivent être ignorés.

Notes

L’infrastructure suit les pages « sales », c’est-à-dire les pages de propriétés pour lesquelles vous avez appelé SetModified( TRUE ). Le bouton Appliquer maintenant est toujours activé si vous appelez SetModified( TRUE ) l’une des pages. Le bouton Appliquer maintenant est désactivé lorsque vous appelez SetModified( FALSE ) l’une des pages, mais uniquement si aucune des autres pages n’est « sale ».

Exemple

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

Voir aussi

Exemple MFC CMNCTRL1
Exemple MFC CMNCTRL2
Exemple MFC PROPDLG
Exemple MFC SNAPVW
CDialog Classe
Graphique hiérarchique
CPropertySheet Classe