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 CPropertyPage
des 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
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::AddPage
de .La feuille de
DoModal
propriétés ouCreate
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::AddPage
de .La feuille de
DoModal
propriétés ouCreate
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 CPropertyPage
que .
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_psp
est 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 TRUE
sur . 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 OnKillActive
de 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
OnWizardFinish
pas 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