Contrôles ActiveX MFC : pages de propriétés
Les pages de propriétés permettent à l'utilisateur d'un contrôle ActiveX d'afficher et de modifier ses propriétés. Ces propriétés sont accessibles en appelant une boîte de dialogue des propriétés du contrôle, qui contient une ou plusieurs pages de propriétés constituant une interface graphique personnalisée pour afficher et modifier les propriétés du contrôle.
Les pages de propriétés du contrôle ActiveX sont affichées de deux façons :
Lorsque le verbe des propriétés du contrôle (OLEIVERB_PROPERTIES) est appelé, le contrôle ouvre une boîte de dialogue modale de propriétés qui contient les pages de propriétés du contrôle.
Le conteneur peut afficher sa propre boîte de dialogue non modale qui indique les pages de propriétés du contrôle sélectionné.
La boîte de dialogue (illustrée dans la figure ci-dessous) est constituée d'une zone pour afficher la page des propriétés actuelles, les onglets pour basculer entre les pages de propriétés, ainsi qu'une collection de boutons qui effectuent des tâches courantes telles que fermer la boîte de dialogue de propriétés, l'annulation de toutes les modifications apportées, ou appliquer immédiatement toutes les modifications apportées au contrôle ActiveX.
Boîte de dialogue Propriétés
Cet article traite des rubriques relatives à l'utilisation des pages de propriétés d'un contrôle ActiveX. Ces niveaux sont les suivants :
Implémenter la page de propriétés par défaut d'un contrôle ActiveX
Ajout de contrôles à une feuille de propriétés
Personnaliser la fonction de DoDataExchange
Pour plus d'informations sur l'utilisation des pages de propriétés d'un contrôle ActiveX, consultez les articles suivants :
Contrôles ActiveX MFC : ajouter une autre page de propriétés personnalisée
Contrôles ActiveX MFC : À l'aide de les pages de propriétés stock
Pour plus d'informations sur l'utilisation des feuilles de propriétés dans une application de MFC autre qu'un contrôle ActiveX, consultez feuilles de propriétés (MFC).
Implémenter la page de propriétés par défaut
Si vous utilisez l'Assistant Contrôle ActiveX pour créer le projet de contrôle, l'Assistant Contrôle ActiveX fournit une classe par défaut pour la page des propriétés pour le contrôle dérivée de COlePropertyPage, classe. Initialement, cette page de propriétés est vide, mais vous pouvez ajouter un contrôle de la boîte de dialogue ou un ensemble de contrôles à celui-ci. Comme l'Assistant Contrôle ActiveX crée uniquement une classe page de propriétés par défaut, les classes supplémentaires de la page de propriétés (également dérivées de COlePropertyPage) doivent être créées à l'aide de l'Affichage de classes. Pour plus d'informations sur cette procédure, consultez Contrôles ActiveX MFC : ajouter une autre page de propriétés personnalisée.
Implémenter une page de propriétés (dans ce cas, la valeur par défaut) est un processus en trois étapes :
Pour implémenter une page de propriétés
Ajoutez une classe dérivée de COlePropertyPage au projet de contrôle. Si le projet a été créé à l'aide de l'Assistant Contrôle ActiveX (comme dans ce cas), la classe par défaut de la page de propriétés existe déjà.
Utilisez l'éditeur de boîtes de dialogue pour ajouter tous les contrôles de page de propriétés.
Personnalisez la fonction DoDataExchange de la classe dérivée de COlePropertyPage pour échanger des valeurs entre le contrôle de page de propriétés et le contrôle ActiveX.
À titre de exemple, les procédures suivantes utilisent une vérification simple (nommée « exemple »). Cet exemple a été créé à l'aide de l'Assistant Contrôle ActiveX et contient uniquement la propriété de légende de titre.
Ajout de contrôles à une feuille de propriétés
Pour ajouter des contrôles dans une page de propriétés
À votre projet de contrôle ouvert, ouvrez l'affichage des ressources.
Double-cliquez sur l'icône de répertoire de la Boîte de dialogue.
Ouvrez la boîte de dialogue IDD_PROPPAGE_SAMPLE .
Assistant Contrôle ActiveX ajoute le nom du projet à la fin de l'ID de la boîte de dialogue, dans ce cas, Exemple.
Faites glisser le contrôle sélectionné de la boîte à outils vers la zone de la boîte de dialogue.
Pour cet exemple, un contrôle d'étiquette de texte « Légende : » et un contrôle de zone d'édition avec un identificateur IDC_CAPTION sont suffisants.
Cliquez sur Enregistrer sur la barre d'outils pour enregistrer vos modifications.
Maintenant que l'interface utilisateur a changé, vous devez lier la zone d'édition à la propriété de légende. Cette opération s'effectue dans la section suivante en modifiant la fonction CSamplePropPage::DoDataExchange.
Personnaliser la fonction de DoDataExchange
La fonction CWnd::DoDataExchange de votre page de propriétés permet aux valeurs de propriétés d'être liées avec les valeurs réelles des propriétés du contrôle. Pour créer des liens, vous devez mapper les champs appropriés de propriétés à leurs propriétés du contrôle respectives.
Ces mappages sont implémentés en utilisant les fonctions de DDP_ de la page de propriétés. Les fonctions DDP_ fonctionnent comme les fonctions DDX_ utilisées dans les boîtes de dialogue standard de MFC, à une exception. Outre la référence à une variable membre, les fonctions de DDP_ prennent le nom de la propriété de contrôle. Voici une entrée standard de la fonction DoDataExchange pour une page de propriétés.
DDP_Text(pDX, IDC_CAPTION, m_caption, _T("Caption"));
Cette fonction associe la variable membre m_caption de la page de propriétés à la légende, à l'aide de la fonction DDP_TEXT.
Lorsque vous faites insérer le contrôle de page de propriétés, vous devez établir un lien entre le contrôle de page de propriétés, IDC_CAPTION, et la propriété de contrôle réelle, légende, la fonction de DDP_Text comme décrit ci-dessus.
pages de propriétés (MFC) sont disponibles pour d'autres types de contrôle de la boîte de dialogue, tels que les cases à cocher, les cases d'option, les zones de liste. Le tableau ci-dessous répertorie l'ensemble des fonctions DDP_ de propriétés et leurs objectifs :
Fonctions de page de propriétés
Nom de la fonction |
Utilisez cette fonction pour lier |
---|---|
DDP_CBIndex |
L'index de la chaîne sélectionnée dans la zone de liste déroulante avec une propriété de contrôle. |
DDP_CBString |
L'index de la chaîne sélectionnée dans la zone de liste modifiable avec une propriété de contrôle. La chaîne sélectionnée peut démarrer avec les mêmes lettres que la valeur de la propriété mais n'a pas besoin d'une correspondance totale. |
DDP_CBStringExact |
L'index de la chaîne sélectionnée dans la zone de liste modifiable avec une propriété de contrôle. La chaîne sélectionnée et la valeur de chaîne de la propriété doivent correspondre exactement. |
DDP_Check |
La case à cocher avec une propriété de contrôle. |
DDP_LBIndex |
L'index de la chaîne sélectionnée dans la zone de liste avec une propriété de contrôle. |
DDP_LBString |
L'index de la chaîne sélectionnée dans la zone de liste avec une propriété de contrôle. La chaîne sélectionnée peut démarrer avec les mêmes lettres que la valeur de la propriété mais n'a pas besoin d'une correspondance totale. |
DDP_LBStringExact |
L'index de la chaîne sélectionnée dans la zone de liste avec une propriété de contrôle. La chaîne sélectionnée et la valeur de chaîne de la propriété doivent correspondre exactement. |
DDP_Radio |
Une case d'option avec une propriété de contrôle. |
DDP_Text |
Texte avec une propriété de contrôle. |