Share via


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 des boutons OK et Appliquer maintenant , une boîte de dialogue d’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 SetWizardModeDoModal. Pour activer les boutons de l’Assistant, appelez, en SetWizardButtonsutilisant 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

CObject

CCmdTarget

CWnd

CPropertySheet

Spécifications

En-têteafxdlgs.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 AddPagede , 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 AddPageDoModal 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 du 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 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 hbmWatermarkparamètres , hpalWatermarket/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 du 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 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 CPropertySheetque .

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 hbmWatermarkparamètres , hpalWatermarket/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 pour Create ne pas avoir les boutons OK, Annuler, Appliquer maintenant et Aide comme les feuilles de propriétés modales. 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_WIZFINISHIDCANCEL.

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 CPropertySheetclasse 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::OnCreatebase.

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 (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_PROPTITLEcomme 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 feuille de propriétés légende de « 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 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édent

  • PSWIZB_NEXT Bouton Suivant

  • PSWIZB_FINISH Bouton Terminer

  • PSWIZB_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 SetWizardButtonsDoModal. 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, CColorPageet 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 SetWizardModeDoModal. 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