La classe CPropertySheet
Représente des feuilles de propriétés, également appelées boîtes de dialogue à onglets.
Syntaxe
class CPropertySheet : public CWnd
Membres
Constructeurs publics
Nom | Description |
---|---|
CPropertySheet::CPropertySheet |
Construit un objet CPropertySheet . |
Méthodes publiques
Nom | Description |
---|---|
CPropertySheet::AddPage |
Ajoute une page à la feuille de propriétés. |
CPropertySheet::Construct |
Construit un objet CPropertySheet . |
CPropertySheet::Create |
Affiche une feuille de propriétés sans mode. |
CPropertySheet::DoModal |
Affiche une feuille de propriétés modale. |
CPropertySheet::EnableStackedTabs |
Indique si la feuille de propriétés utilise des onglets empilés ou de défilement. |
CPropertySheet::EndDialog |
Termine la feuille de propriétés. |
CPropertySheet::GetActiveIndex |
Récupère l’index de la page active de la feuille de propriétés. |
CPropertySheet::GetActivePage |
Retourne l’objet de page actif. |
CPropertySheet::GetPage |
Récupère un pointeur vers la page spécifiée. |
CPropertySheet::GetPageCount |
Récupère le nombre de pages de la feuille de propriétés. |
CPropertySheet::GetPageIndex |
Récupère l’index de la page spécifiée de la feuille de propriétés. |
CPropertySheet::GetTabControl |
Récupère un pointeur vers un contrôle Tab. |
CPropertySheet::MapDialogRect |
Convertit les unités de boîte de dialogue d’un rectangle en unités d’écran. |
CPropertySheet::OnInitDialog |
Remplacer pour augmenter l’initialisation de la feuille de propriétés. |
CPropertySheet::PressButton |
Simule le choix du bouton spécifié dans une feuille de propriétés. |
CPropertySheet::RemovePage |
Supprime une page de la feuille de propriétés. |
CPropertySheet::SetActivePage |
Définit par programme l’objet de page actif. |
CPropertySheet::SetFinishText |
Définit le texte du bouton Terminer. |
CPropertySheet::SetTitle |
Définit la légende de la feuille de propriétés. |
CPropertySheet::SetWizardButtons |
Active les boutons de l’Assistant. |
CPropertySheet::SetWizardMode |
Active le mode Assistant. |
Membres de données publics
Nom | Description |
---|---|
CPropertySheet::m_psh |
Structure Windows PROPSHEETHEADER . Fournit l’accès aux paramètres de feuille de propriétés de base. |
Notes
Une feuille de propriétés se compose d’un CPropertySheet
objet et d’un ou plusieurs CPropertyPage
objets. L’infrastructure affiche une feuille de propriétés sous forme de fenêtre avec un ensemble d’index d’onglets et une zone qui contient la page actuellement sélectionnée. L’utilisateur accède à une page spécifique à l’aide de l’onglet approprié.
CPropertySheet
prend en charge la structure développée PROPSHEETHEADER
introduite dans Windows 98 et Windows NT 2000. La structure contient des indicateurs et des membres supplémentaires qui prennent en charge l’utilisation d’une bitmap d’arrière-plan « filigrane ».
Pour afficher automatiquement ces nouvelles images dans votre objet de feuille de propriétés, transmettez des valeurs valides pour les images bitmap et palette dans l’appel à CPropertySheet::Construct
ou CPropertySheet::CPropertySheet
.
Même si CPropertySheet
elle n’est pas dérivée de CDialog
, la gestion d’un CPropertySheet
objet ressemble à la gestion d’un CDialog
objet. Par exemple, la création d’une feuille de propriétés nécessite une construction en deux parties : appeler le constructeur, puis appeler DoModal
une feuille de propriétés modale ou Create
une feuille de propriétés sans mode. CPropertySheet
a deux types de constructeurs : CPropertySheet::Construct
et CPropertySheet::CPropertySheet
.
Lorsque vous construisez un CPropertySheet
objet, certains styles de fenêtre peuvent provoquer une exception de première chance. Cela résulte du système qui tente de modifier le style de la feuille de propriétés avant la création de la feuille. Pour éviter cette exception, vérifiez que vous définissez les styles suivants lorsque vous créez votre CPropertySheet
:
DS_3DLOOK
DS_CONTROL
WS_CHILD
WS_TABSTOP
Les styles suivants sont facultatifs et ne provoquent pas l’exception de première chance :
DS_SHELLFONT
DS_LOCALEDIT
WS_CLIPCHILDREN
Les autres Window Styles
sont interdits et vous ne devez pas les activer.
L’échange de données entre un CPropertySheet
objet et un objet externe est similaire à l’échange de données avec un CDialog
objet. La différence importante est que les paramètres d’une feuille de propriétés sont généralement des variables membres des CPropertyPage
objets plutôt que de l’objet CPropertySheet
lui-même.
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 OK et les boutons Appliquer maintenant, une boîte de dialogue Onglet de type Assistant a un bouton Précédent, un bouton Suivant ou Terminer, un bouton Annuler et un bouton Aide.
Pour créer une boîte de dialogue de type Assistant, suivez les mêmes étapes que celles que vous suivreiez pour créer une feuille de propriétés standard, mais appelez avant d’appeler SetWizardMode
DoModal
. Pour activer les boutons de l’Assistant, appelez, en SetWizardButtons
utilisant des indicateurs pour personnaliser leur fonction et leur apparence. Pour activer le bouton Terminer , appelez SetFinishText
une fois que l’utilisateur a effectué une action sur la dernière page de l’Assistant.
Pour plus d’informations sur l’utilisation d’objets CPropertySheet
, consultez l’article Feuilles de propriétés et Pages de propriétés.
Hiérarchie d'héritage
CPropertySheet
Spécifications
En-tête : afxdlgs.h
CPropertySheet::AddPage
Ajoute la page fournie avec l’onglet le plus à droite de la feuille de propriétés.
void AddPage(CPropertyPage* pPage);
Paramètres
pPage
Pointe vers la page à ajouter à la feuille de propriétés. Ne peut pas être NULL
.
Notes
Ajoutez des pages à la feuille de propriétés dans l’ordre de gauche à droite que vous souhaitez qu’elles apparaissent.
AddPage
ajoute l’objet CPropertyPage
à la liste des pages de l’objet CPropertySheet
, mais ne crée pas réellement la fenêtre de la page. L’infrastructure reporte la création de la fenêtre de la page jusqu’à ce que l’utilisateur sélectionne cette page.
Lorsque vous ajoutez une page de propriétés à l’aide AddPage
de , il CPropertySheet
s’agit du parent de l’objet CPropertyPage
. Pour accéder à la feuille de propriétés à partir de la page de propriétés, appelez CWnd::GetParent
.
Il n’est pas nécessaire d’attendre la création de la fenêtre de feuille de propriétés pour appeler AddPage
. En règle générale, vous appelez avant d’appeler AddPage
DoModal
ou Create
.
Si vous appelez AddPage
après avoir affiché la page de propriétés, la ligne d’onglet reflète la page nouvellement ajoutée.
Exemple
// Add three pages to a CPropertySheet object, then show the
// CPropertySheet object as a modal dialog. CStylePage, CShapePage,
// and CColorPage are CPropertyPage-derived classes created
// by the Add Class wizard.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.DoModal();
CPropertySheet::Construct
Construit un objet CPropertySheet
.
void Construct(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
void Construct(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
void Construct(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Paramètres
nIDCaption
ID de la légende à utiliser pour la feuille de propriétés.
pParentWnd
Pointeur vers la fenêtre parente de la feuille de propriétés. Si NULL
, la fenêtre parente est la fenêtre principale de l’application.
iSelectPage
Index de la page qui sera initialement en haut. La valeur par défaut est la première page ajoutée à la feuille.
pszCaption
Pointeur vers une chaîne contenant la légende à utiliser pour la feuille de propriétés. Ne peut pas être NULL
.
hbmWatermark
Gérez la bitmap de filigrane de la page de propriétés.
hpalWatermark
Gérez la palette de bitmap de filigrane et/ou bitmap d’en-tête.
hbmHeader
Gérez la bitmap d’en-tête de la page de propriétés.
Notes
Appelez cette fonction membre si l’un des constructeurs de classe n’a pas déjà été appelé. Par exemple, appelez Construct
lorsque vous déclarez ou allouez des tableaux d’objets CPropertySheet
. Dans le cas des tableaux, vous devez appeler Construct
chaque membre du tableau.
Pour afficher la feuille de propriétés, appelez DoModal
ou Create
. La chaîne contenue dans le premier paramètre sera placée dans la barre de légende de la feuille de propriétés.
Vous pouvez afficher automatiquement des images de filigrane et/ou d’en-tête si vous utilisez les troisième ou quatrième prototypes de Construct
, répertoriés ci-dessus, et que vous transmettez des valeurs valides pour les hbmWatermark
paramètres , hpalWatermark
et/ou hbmHeader
.
Exemple
L’exemple suivant montre dans quelles circonstances vous appelez Construct
.
const int c_cSheets = 3;
CPropertySheet grpropsheet[c_cSheets];
// no need to call Construct for this next one
CPropertySheet someSheet(_T("Some sheet"));
LPTSTR rgszSheets[c_cSheets] = {
_T("Sheet 1"),
_T("Sheet 2"),
_T("Sheet 3")
};
for (int i = 0; i < c_cSheets; i++)
grpropsheet[i].Construct(rgszSheets[i]);
CPropertySheet::CPropertySheet
Construit un objet CPropertySheet
.
CPropertySheet();
explicit CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
explicit CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd = NULL,
UINT iSelectPage = 0);
CPropertySheet(
UINT nIDCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
CPropertySheet(
LPCTSTR pszCaption,
CWnd* pParentWnd,
UINT iSelectPage,
HBITMAP hbmWatermark,
HPALETTE hpalWatermark = NULL,
HBITMAP hbmHeader = NULL);
Paramètres
nIDCaption
ID de la légende à utiliser pour la feuille de propriétés.
pParentWnd
Pointe vers la fenêtre parente de la feuille de propriétés. Si NULL
, la fenêtre parente est la fenêtre principale de l’application.
iSelectPage
Index de la page qui sera initialement en haut. La valeur par défaut est la première page ajoutée à la feuille.
pszCaption
Pointe vers une chaîne contenant la légende à utiliser pour la feuille de propriétés. Ne peut pas être NULL
.
hbmWatermark
Handle vers la bitmap d’arrière-plan de la feuille de propriétés.
hpalWatermark
Handle de la palette de bitmap de filigrane et/ou bitmap d’en-tête.
hbmHeader
Handle vers la bitmap d’en-tête de la page de propriétés.
Notes
Pour afficher la feuille de propriétés, appelez DoModal
ou Create
. La chaîne contenue dans le premier paramètre sera placée dans la barre de légende de la feuille de propriétés.
Si vous avez plusieurs paramètres (par exemple, si vous utilisez un tableau), utilisez Construct
plutôt CPropertySheet
que .
Vous pouvez afficher automatiquement des images de filigrane et/ou d’en-tête si vous utilisez les troisième ou quatrième prototypes de CPropertySheet
, ci-dessus et que vous transmettez des valeurs valides pour les hbmWatermark
paramètres , hpalWatermark
et/ou hbmHeader
.
Exemple
// Declare a CPropertySheet object titled "Simple PropertySheet".
CPropertySheet dlgPropertySheet1(_T("Simple PropertySheet"));
// Declare a CPropertySheet object whose title is specified in the
// IDS_PROPERTYSHEET_TITLE string resource, and the second page is
// initially on top.
CPropertySheet dlgPropertySheet2(IDS_PROPERTYSHEET_TITLE, this, 1);
CPropertySheet::Create
Affiche une feuille de propriétés sans mode.
virtual BOOL Create(CWnd* pParentWnd = NULL,
DWORD dwStyle = (DWORD)-1,
DWORD dwExStyle = 0);
Paramètres
pParentWnd
Pointe vers la fenêtre parente. Si NULL
, parent est le bureau.
dwStyle
Styles de fenêtre pour la feuille de propriétés. Pour obtenir la liste complète des styles disponibles, consultez Styles de fenêtre.
dwExStyle
Styles de fenêtre étendus pour la feuille de propriétés. Pour obtenir la liste complète des styles disponibles, consultez Styles de fenêtre étendus
Valeur de retour
Différent de zéro si la feuille de propriétés est créée avec succès ; sinon 0.
Notes
L’appel à Create
l’intérieur du constructeur, ou vous pouvez l’appeler après l’appel du constructeur.
Le style par défaut, exprimé en passant -1 comme dwStyle
, est en fait WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE
. Le style de fenêtre étendu par défaut, exprimé en passant 0 comme dwExStyle
, est en fait WS_EX_DLGMODALFRAME
.
La Create
fonction membre retourne immédiatement après la création de la feuille de propriétés. Pour détruire la feuille de propriétés, appelez CWnd::DestroyWindow
.
Les feuilles de propriétés sans mode affichées avec un appel à Create
ne pas avoir OK, les boutons Annuler, Appliquer maintenant et Aide comme les feuilles de propriétés modales le font. Les boutons souhaités doivent être créés par l’utilisateur.
Pour afficher une feuille de propriétés modale, appelez DoModal
à la place.
Exemple
// This code fragment shows how to create a modeless property sheet
// dialog in a command message handler (OnModelessPropertySheet())
// of a CView-derived class.
void CPSheetView::OnModelessPropertySheet()
{
// Declare a CPropertySheet object. m_pdlgPropertySheet is a data
// member of type CPropertySheet in CView-derived class.
m_pdlgPropertySheet = new CPropertySheet(_T("Simple PropertySheet"));
ASSERT(m_pdlgPropertySheet);
// Add three pages to the CPropertySheet object. Both m_pstylePage,
// m_pcolorPage, and m_pshapePage are data members of type
// CPropertyPage-derived classes in CView-derived class.
m_pstylePage = new CStylePage;
m_pcolorPage = new CColorPage;
m_pshapePage = new CShapePage;
m_pdlgPropertySheet->AddPage(m_pstylePage);
m_pdlgPropertySheet->AddPage(m_pcolorPage);
m_pdlgPropertySheet->AddPage(m_pshapePage);
// Create a modeless CPropertySheet dialog.
m_pdlgPropertySheet->Create();
}
// The code fragment below shows how to destroy the C++ objects for
// propertysheet and propertypage in the destructor of CView-derived
// class.
// NOTE: DestroyWindow() is called in CPropertySheet::OnClose() so
// you do not need to call it here. Property pages are children
// of the CPropertySheet, they will be destroyed by their parents.
CPSheetView::~CPSheetView()
{
delete m_pshapePage;
delete m_pstylePage;
delete m_pcolorPage;
delete m_pdlgPropertySheet;
}
CPropertySheet::DoModal
Affiche une feuille de propriétés modale.
virtual INT_PTR DoModal();
Valeur de retour
IDOK
ou IDCANCEL
si la fonction a réussi ; sinon 0 ou -1. Si la feuille de propriétés a été établie en tant qu’Assistant (voir SetWizardMode
), DoModal
renvoie ou ID_WIZFINISH
IDCANCEL
.
Notes
La valeur de retour correspond à l’ID du contrôle qui a fermé la feuille de propriétés. Une fois cette fonction retournée, les fenêtres correspondant à la feuille de propriétés et toutes les pages ont été détruites. Les objets eux-mêmes existent toujours. En règle générale, vous allez récupérer des données à partir des CPropertyPage
objets après DoModal
avoir retourné IDOK.
Pour afficher une feuille de propriétés sans mode, appelez Create
à la place.
Lorsqu’une page de propriétés est créée à partir de sa ressource de boîte de dialogue correspondante, elle peut provoquer une exception de première chance. Cela résulte de la page de propriétés qui modifie le style de la ressource de boîte de dialogue en style requis avant la création de la page. Étant donné que les ressources sont généralement en lecture seule, cela provoque une exception. Le système gère l’exception et effectue une copie de la ressource modifiée. L’exception de première chance peut donc être ignorée.
Remarque
Cette exception doit être gérée par le système d’exploitation si vous compilez avec le modèle de gestion des exceptions asynchrone. Pour plus d’informations sur les modèles de gestion des exceptions, consultez /EH
(Modèle de gestion des exceptions). Dans ce cas, n’encapsulez pas les appels à CPropertySheet::DoModal
l’aide d’un bloc try-catch C++ dans lequel l’intercept gère toutes les exceptions, par exemple catch (...)
. Ce bloc gère l’exception destinée au système d’exploitation et provoque un comportement imprévisible. Toutefois, vous pouvez utiliser en toute sécurité la gestion des exceptions C++ avec des types d’exceptions spécifiques ou une gestion structurée des exceptions où l’exception Violation d’accès est transmise au système d’exploitation.
Pour éviter de générer cette exception de première chance, vous pouvez garantir manuellement que la feuille de propriétés a les styles de fenêtre appropriés. Vous devez définir les styles suivants pour une feuille de propriétés :
DS_3DLOOK
DS_CONTROL
WS_CHILD
WS_TABSTOP
Vous pouvez utiliser les styles facultatifs suivants sans provoquer d’exception de première chance :
DS_SHELLFONT
DS_LOCALEDIT
WS_CLIPCHILDREN
Désactivez tous les autres styles Windows, car ils ne sont pas compatibles avec les feuilles de propriétés. Ces conseils ne s’appliquent pas aux styles étendus. La définition appropriée de ces styles standard garantit que la feuille de propriétés n’a pas besoin d’être modifiée et évite de générer l’exception de première chance.
Exemple
Consultez l’exemple pour CPropertySheet::AddPage
.
CPropertySheet::EnableStackedTabs
Indique s’il faut empiler des lignes d’onglets dans une feuille de propriétés.
void EnableStackedTabs(BOOL bStacked);
Paramètres
bStacked
Indique si les onglets empilés sont activés dans la feuille de propriétés. Désactivez les lignes empilées d’étiquettes en définissant bStacked
sur FALSE
.
Notes
Par défaut, si une feuille de propriétés comporte plus d’onglets que ce qui correspond à une seule ligne dans la largeur de la feuille de propriétés, les onglets sont empilés dans plusieurs lignes. Pour utiliser des onglets de défilement au lieu d’empiler des onglets, appelez EnableStackedTabs
avec bStacked
la valeur définie FALSE
avant d’appeler DoModal
ou Create
.
Vous devez appeler EnableStackedTabs
lorsque vous créez une feuille de propriétés modale ou sans mode. Pour incorporer ce style dans une CPropertySheet
classe dérivée de -, écrivez un gestionnaire de messages pour WM_CREATE
. Dans la version substituée de , appelez EnableStackedTabs( FALSE )
avant d’appeler l’implémentation de classe de CWnd::OnCreate
base.
Exemple
int CMyPropertySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// Set for Scrolling Tabs style
EnableStackedTabs(FALSE);
// Call the base class
if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
CPropertySheet::EndDialog
Termine la feuille de propriétés.
void EndDialog(int nEndID);
Paramètres
nEndID
Identificateur à utiliser comme valeur de retour de la feuille de propriétés.
Notes
Cette fonction membre est appelée par l’infrastructure lorsque le bouton OK, Annuler ou Fermer est enfoncé. Appelez cette fonction membre si un événement se produit qui doit fermer la feuille de propriétés.
Cette fonction membre est utilisée uniquement avec une boîte de dialogue modale.
Exemple
Consultez l’exemple pour CPropertySheet::PressButton
.
CPropertySheet::GetActiveIndex
Obtient le numéro d’index de la page active de la fenêtre de feuille de propriétés, puis utilise le numéro d’index retourné comme paramètre pour GetPage
.
int GetActiveIndex() const;
Valeur de retour
Numéro d’index de la page active.
Exemple
Consultez l’exemple pour CPropertySheet::GetActivePage
.
CPropertySheet::GetActivePage
Récupère la page active de la fenêtre de feuille de propriétés.
CPropertyPage* GetActivePage() const;
Valeur de retour
Pointeur vers la page active.
Notes
Utilisez cette fonction membre pour effectuer une action sur la page active.
Exemple
// The code fragment below sets the last active page (i.e. the
// active page when the propertysheet was closed) to be the first
// visible page when the propertysheet is shown. The last active
// page was saved in m_LastActivePage, (a member variable of
// CDocument-derived class) when OK was selected from the
// propertysheet. CMyPropertySheet is a CPropertySheet-derived class.
BOOL CMyPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
SetActivePage(doc->m_LastActivePage);
return bResult;
}
BOOL CMyPropertySheet::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (LOWORD(wParam) == IDOK)
{
CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
doc->m_LastActivePage = GetPageIndex(GetActivePage()); // or GetActiveIndex()
}
return CPropertySheet::OnCommand(wParam, lParam);
}
CPropertySheet::GetPage
Retourne un pointeur vers la page spécifiée dans cette feuille de propriétés.
CPropertyPage* GetPage(int nPage) const;
Paramètres
nPage
Index de la page souhaitée, à partir de 0. Doit être compris entre 0 et un nombre inférieur au nombre de pages de la feuille de propriétés, inclus.
Valeur de retour
Pointeur vers la page correspondant au nPage
paramètre.
Exemple
Consultez l’exemple pour CPropertyPage::OnWizardFinish
.
CPropertySheet::GetPageCount
Détermine le nombre de pages actuellement dans la feuille de propriétés.
int GetPageCount() const;
Valeur de retour
Nombre de pages dans la feuille de propriétés.
Exemple
Consultez l’exemple pour CPropertyPage::OnWizardFinish
.
CPropertySheet::GetPageIndex
Récupère le numéro d’index de la page spécifiée dans la feuille de propriétés.
int GetPageIndex(CPropertyPage* pPage);
Paramètres
pPage
Pointe vers la page avec l’index à trouver. Ne peut pas être NULL
.
Valeur de retour
Numéro d’index d’une page.
Notes
Par exemple, vous devez utiliser GetPageIndex
pour obtenir l’index de page afin d’utiliser SetActivePage
ou GetPage
.
Exemple
Consultez l’exemple pour CPropertySheet::GetActivePage
.
CPropertySheet::GetTabControl
Récupère un pointeur vers un contrôle Tab pour effectuer quelque chose spécifique au contrôle tabulation (autrement dit, pour utiliser l’une des API dans CTabCtrl
).
CTabCtrl* GetTabControl() const;
Valeur de retour
Pointeur vers un contrôle Tab.
Notes
Par exemple, appelez cette fonction membre si vous souhaitez ajouter des bitmaps à chacun des onglets pendant l’initialisation.
Exemple
// Create and associate a tooltip control to the tab control of
// CMyTTPropertySheet. CMyTTPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyTTPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
// Create a tooltip control. m_pToolTipCtrl is a member variable
// of type CToolTipCtrl* in CMyTTPropertySheet class. It is
// initialized to NULL in the constructor, and destroyed in the
// destructor of CMyTTPropertySheet class.
m_pToolTipCtrl = new CToolTipCtrl;
if (!m_pToolTipCtrl->Create(this))
{
TRACE(_T("Unable To create ToolTip\n"));
return bResult;
}
// Associate the tooltip control to the tab control
// of CMyPropertySheet.
CTabCtrl* ptab = GetTabControl();
ptab->SetToolTips(m_pToolTipCtrl);
// Get the bounding rectangle of each tab in the tab control of the
// property sheet. Use this rectangle when registering a tool with
// the tool tip control. IDS_FIRST_TOOLTIP is the first ID string
// resource that contains the text for the tool.
int count = ptab->GetItemCount();
int id = IDS_FIRST_TOOLTIP;
for (int i = 0; i < count; i++)
{
CRect r;
ptab->GetItemRect(i, &r);
VERIFY(m_pToolTipCtrl->AddTool(ptab, id, &r, id));
id++;
}
// Activate the tooltip control.
m_pToolTipCtrl->Activate(TRUE);
return bResult;
}
// Override PreTranslateMessage() so RelayEvent() can be
// called to pass a mouse message to CMyTTPropertySheet's
// tooltip control for processing.
BOOL CMyTTPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (NULL != m_pToolTipCtrl)
m_pToolTipCtrl->RelayEvent(pMsg);
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::m_psh
Structure dont les membres stockent les caractéristiques de PROPSHEETHEADER
.
Notes
Utilisez cette structure pour initialiser l’apparence de la feuille de propriétés après sa construction, mais avant qu’elle ne soit affichée avec la DoModal
fonction membre. Par exemple, définissez le dwSize
membre de m_psh
la taille dont vous souhaitez que la feuille de propriétés dispose.
Pour plus d’informations sur cette structure, notamment une liste de ses membres, consultez PROPSHEETHEADER
le Kit de développement logiciel (SDK) Windows.
Exemple
// This code fragment shows how to change CPropertySheet's settings
// before it is shown. After the changes, CPropertySheet has the
// caption "Simple Properties", no "Apply" button, and the
// second page (CColorPage) initially on top.
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
dlgPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW | PSH_PROPTITLE;
dlgPropertySheet.m_psh.pszCaption = _T("Simple");
dlgPropertySheet.m_psh.nStartPage = 1;
dlgPropertySheet.DoModal();
CPropertySheet::MapDialogRect
Convertit les unités de boîte de dialogue d’un rectangle en unités d’écran.
void MapDialogRect(LPRECT lpRect) const;
Paramètres
lpRect
Pointe vers une structure ou CRect
un RECT
objet qui contient les coordonnées de boîte de dialogue à convertir.
Notes
Les unités de boîte de dialogue sont indiquées en termes d’unité de base de boîte de dialogue actuelle dérivée de la largeur moyenne et de la hauteur des caractères dans la police utilisée pour le texte de la boîte de dialogue. Une unité horizontale est une quatrième de l’unité de largeur de base de la boîte de dialogue, et une unité verticale est une huitième de l’unité de hauteur de base de boîte de dialogue.
La GetDialogBaseUnits
fonction Windows retourne des informations de taille pour la police système, mais vous pouvez spécifier une police différente pour chaque feuille de propriétés si vous utilisez le style DS_SETFONT dans le fichier de définition de ressource. La MapDialogRect
fonction Windows, décrite dans le Kit de développement logiciel (SDK) Windows, utilise la police appropriée pour cette boîte de dialogue.
La MapDialogRect
fonction membre remplace les unités de boîte de dialogue par des unités lpRect
d’écran (pixels) afin que le rectangle puisse être utilisé pour créer une boîte de dialogue ou positionner un contrôle dans une zone.
CPropertySheet::OnInitDialog
Remplace l’augmentation de l’initialisation de la feuille de propriétés.
virtual BOOL OnInitDialog();
Valeur de retour
Spécifie si l’application a défini le focus d’entrée sur l’un des contrôles de la feuille de propriétés. Si OnInitDialog
cette propriété est renvoyée différente de zéro, Windows définit le focus d’entrée sur le premier contrôle de la feuille de propriétés. L’application peut retourner 0 uniquement si elle a explicitement défini le focus d’entrée sur l’un des contrôles de la feuille de propriétés.
Notes
Cette fonction membre est appelée en réponse au WM_INITDIALOG
message. Ce message est envoyé à la feuille de propriétés pendant le Create
ou DoModal
les appels, qui se produisent immédiatement avant l’affichage de la feuille de propriétés.
Remplacez cette fonction membre si vous devez effectuer un traitement spécial lorsque la feuille de propriétés est initialisée. Dans la version substituée, appelez d’abord la classe OnInitDialog
de base, mais ignorez sa valeur de retour. Vous retournerez normalement TRUE
à partir de votre fonction membre substituée.
Vous n’avez pas besoin d’une entrée de mappage de messages pour cette fonction membre.
CPropertySheet::PressButton
Simule le choix du bouton spécifié dans une feuille de propriétés.
void PressButton(int nButton);
Paramètres
nButton
nButton
: identifie le bouton à appuyer. Ce paramètre peut avoir l'une des valeurs suivantes :
PSBTN_BACK
Choisit le bouton Précédent.PSBTN_NEXT
Choisit le bouton Suivant.PSBTN_FINISH
Choisit le bouton Terminer.PSBTN_OK
Choisit le bouton OK.PSBTN_APPLYNOW
Choisit le bouton Appliquer maintenant.PSBTN_CANCEL
Choisit le bouton Annuler.PSBTN_HELP
Choisit le bouton Aide.
Notes
Pour PSM_PRESSBUTTON
plus d’informations sur le message Pressbutton du Kit de développement logiciel (SDK) Windows.
Un appel à ne pas envoyer la PSN_APPLY
notification d’une PressButton
page de propriétés à l’infrastructure. Pour envoyer cette notification, appelez CPropertyPage::OnOK
.
Exemple
// Simulate the selection of OK and Cancel buttons when Alt+K and
// Alt+C are pressed. CMyPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyPropertySheet::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
{
BOOL altkey = GetKeyState(VK_MENU) < 0;
if (altkey)
{
BOOL handled = TRUE;
switch (toupper((int)pMsg->wParam))
{
case 'C': // for Alt+C - Cancel button
PressButton(PSBTN_CANCEL); // or EndDialog(IDCANCEL);
break;
case 'K': // for Alt+K - OK button
PressButton(PSBTN_OK); // or EndDialog(IDOK);
break;
default:
handled = FALSE;
}
if (handled)
return TRUE;
}
}
return CPropertySheet::PreTranslateMessage(pMsg);
}
CPropertySheet::RemovePage
Supprime une page de la feuille de propriétés et détruit la fenêtre associée.
void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);
Paramètres
pPage
Pointe vers la page à supprimer de la feuille de propriétés. Ne peut pas être NULL
.
nPage
Index de la page à supprimer. Doit être compris entre 0 et un nombre inférieur au nombre de pages de la feuille de propriétés, inclus.
Notes
L’objet CPropertyPage
lui-même n’est pas détruit tant que le propriétaire de la CPropertySheet
fenêtre n’est pas fermé.
CPropertySheet::SetActivePage
Modifie la page active.
BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);
Paramètres
nPage
Index de la page à définir. Elle doit être comprise entre 0 et un nombre inférieur au nombre de pages de la feuille de propriétés, inclus.
pPage
Pointe vers la page à définir dans la feuille de propriétés. Ne peut pas être NULL
.
Valeur de retour
Différent de zéro si la feuille de propriétés est activée avec succès ; sinon 0.
Notes
Par exemple, utilisez SetActivePage
si l’action d’un utilisateur sur une page doit entraîner une autre page à devenir la page active.
Exemple
Consultez l’exemple pour CPropertySheet::GetActivePage
.
CPropertySheet::SetFinishText
Définit le texte dans le bouton Terminer la commande.
void SetFinishText(LPCTSTR lpszText);
Paramètres
lpszText
Pointe vers le texte à afficher sur le bouton Terminer.
Notes
Appelez SetFinishText
pour afficher le texte du bouton Terminer la commande et masquer les boutons Suivant et Précédent une fois que l’utilisateur a terminé l’action sur la dernière page de l’Assistant.
Exemple
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetTitle
Spécifie la légende de la feuille de propriétés (le texte affiché dans la barre de titre d’une fenêtre de cadre).
void SetTitle(
LPCTSTR lpszText,
UINT nStyle = 0);
Paramètres
nStyle
Spécifie le style du titre de la feuille de propriétés. Le style doit être spécifié à 0 ou en tant que PSH_PROPTITLE
. Si le style est défini PSH_PROPTITLE
comme suit, le mot « Propriétés » apparaît après le texte spécifié comme légende. Par exemple, l’appel SetTitle
(« Simple », PSH_PROPTITLE
) entraîne une légende de feuille de propriétés « Propriétés simples ».
lpszText
Pointe vers le texte à utiliser comme légende dans la barre de titre de la feuille de propriétés.
Notes
Par défaut, une feuille de propriétés utilise le paramètre de légende dans le constructeur de feuille de propriétés.
Exemple
// Declare a CPropertySheet object with a caption "Simple PropertySheet".
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));
// Add three pages to the CPropertySheet object. CStylePage, CColorPage,
// and CShapePage are CPropertyPage-derived classes created
// by the Add Class wizard.
CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);
// Change the caption of the CPropertySheet object
// from "Simple PropertySheet" to "Simple Properties".
dlgPropertySheet.SetTitle(_T("Simple"), PSH_PROPTITLE);
// Show the CPropertySheet object as MODAL.
dlgPropertySheet.DoModal();
CPropertySheet::SetWizardButtons
Active ou désactive le bouton Précédent, Suivant ou Terminer dans une feuille de propriétés de l’Assistant.
void SetWizardButtons(DWORD dwFlags);
Paramètres
dwFlags
Ensemble d’indicateurs qui personnalisent la fonction et l’apparence des boutons de l’Assistant. Ce paramètre peut être une combinaison des valeurs suivantes :
PSWIZB_BACK
Bouton PrécédentPSWIZB_NEXT
Bouton SuivantPSWIZB_FINISH
Bouton TerminerPSWIZB_DISABLEDFINISH
Bouton Terminer désactivé
Notes
Appel SetWizardButtons
uniquement une fois la boîte de dialogue ouverte ; vous ne pouvez pas appeler avant d’appeler SetWizardButtons
DoModal
. En règle générale, vous devez appeler SetWizardButtons
à partir de CPropertyPage::OnSetActive
.
Si vous souhaitez modifier le texte sur le bouton Terminer ou masquer les boutons Suivant et Précédent une fois que l’utilisateur a terminé l’Assistant, appelez SetFinishText
. Notez que le même bouton est partagé pour Terminer et Suivant. Vous pouvez afficher un bouton Terminer ou Suivant à la fois, mais pas les deux.
Exemple
A CPropertySheet
a trois pages de propriétés de l’Assistant : CStylePage
, CColorPage
et CShapePage
. Le fragment de code ci-dessous montre comment activer et désactiver les boutons Précédent et Suivant dans la page de propriétés de l’Assistant.
// CStylePage is the first wizard property page. Disable the Back
// button but enable the Next button.
BOOL CStylePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*) GetParent();
psheet->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CColorPage is the second wizard property page. Enable both the
// Back button and the Next button.
BOOL CColorPage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}
// CShapePage is the last wizard property page. Enable the Back
// button and change the Next button to Finish. The "Finish" button
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
CPropertySheet* psheet = (CPropertySheet*)GetParent();
psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
psheet->SetFinishText(_T("Done"));
return CPropertyPage::OnSetActive();
}
CPropertySheet::SetWizardMode
Établit une page de propriétés en tant qu’Assistant.
void SetWizardMode();
Notes
Une caractéristique clé d’une page de propriétés de l’Assistant est que l’utilisateur navigue à l’aide des boutons Suivant ou Terminer, Précédent et Annuler au lieu des onglets.
Appel avant d’appeler SetWizardMode
DoModal
. Une fois l’appel terminé SetWizardMode
, DoModal
retourne ID_WIZFINISH
(si l’utilisateur se ferme avec le bouton Terminer) ou IDCANCEL
.
SetWizardMode
définit l’indicateur PSH_WIZARD
.
Exemple
CPropertySheet sheet(_T("Simple PropertySheet"));
CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;
sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);
sheet.SetWizardMode();
sheet.DoModal();
Voir aussi
Exemple MFC CMNCTRL1
Exemple MFC CMNCTRL2
Exemple MFC PROPDLG
Exemple MFC SNAPVW
CWnd
Classe
Graphique hiérarchique