Contrôles ActiveX MFC : ajout d'une page de propriétés personnalisées
Parfois, un contrôle ActiveX a plus de propriétés que possible sur une page de propriétés. Dans ce cas, vous pouvez ajouter des pages de propriétés au contrôle ActiveX pour afficher ces propriétés.
Cet article décrit l’ajout de nouvelles pages de propriétés à un contrôle ActiveX qui possède déjà au moins une page de propriétés. Pour plus d’informations sur l’ajout de pages de propriétés stock (police, image ou couleur), consultez l’article MFC ActiveX Controls : Using Stock Property Pages.
Les procédures suivantes utilisent un exemple d’infrastructure de contrôle ActiveX créée par l’Assistant Contrôle ActiveX. Par conséquent, les noms et identificateurs de classe sont uniques à cet exemple.
Pour plus d’informations sur l’utilisation de pages de propriétés dans un contrôle ActiveX, consultez les articles suivants :
Contrôles ActiveX MFC : utilisation des pages de propriétés stock
Remarque
Il est fortement recommandé que les nouvelles pages de propriétés respectent la norme de taille pour les pages de propriétés de contrôle ActiveX. L’image de stock et les pages de propriétés de couleur mesurent 250 x 62 unités de dialogue (DLU). La page de propriétés de police standard est de 250 x 110 DTU. La page de propriétés par défaut créée par l’Assistant Contrôle ActiveX utilise la norme DLU 250x62.
Pour insérer un nouveau modèle de page de propriétés dans votre projet
Une fois votre projet de contrôle ouvert, ouvrez l’affichage des ressources dans l’espace de travail du projet.
Cliquez avec le bouton droit dans l’affichage des ressources pour ouvrir le menu contextuel, puis cliquez sur Ajouter une ressource.
Développez le nœud de boîte de dialogue , puis sélectionnez IDD_OLE_PROPPAGE_SMALL.
Cliquez sur Nouveau pour ajouter la ressource à votre projet.
Sélectionnez le nouveau modèle de page de propriétés pour actualiser la fenêtre Propriétés (en mode Ressource).
Entrez une nouvelle valeur pour la propriété ID . Cet exemple utilise IDD_PROPPAGE_NEWPAGE.
Cliquez sur Save dans la barre d'outils.
Pour associer le nouveau modèle à une classe
Ouvrez l’affichage de classe.
Cliquez avec le bouton droit dans l’affichage classe pour ouvrir le menu contextuel.
Dans le menu contextuel, cliquez sur Ajouter, puis sur Ajouter une classe.
Cette opération ouvre la boîte de dialogue Ajouter une classe.
Double-cliquez sur le modèle de classe MFC.
Dans la zone Nom de la classe dans l’Assistant Classe MFC, tapez un nom pour la nouvelle classe de boîte de dialogue. (Dans cet exemple,
CAddtlPropPage
.)Si vous souhaitez modifier les noms de fichiers, cliquez sur Modifier. Tapez les noms de vos fichiers d’implémentation et d’en-tête, ou acceptez les noms par défaut.
Dans la zone Classe de base, sélectionnez
COlePropertyPage
.Dans la boîte de dialogue ID , sélectionnez IDD_PROPPAGE_NEWPAGE.
Cliquez sur Terminer pour créer la classe.
Pour autoriser les utilisateurs du contrôle à accéder à cette nouvelle page de propriétés, apportez les modifications suivantes à la section macro des ID de page de propriétés du contrôle (située dans le fichier d’implémentation du contrôle) :
BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
PROPPAGEID(CMyAxUIPropPage::guid)
PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)
Notez que vous devez augmenter le deuxième paramètre de la macro BEGIN_PROPPAGEIDS (le nombre de pages de propriétés) de 1 à 2.
Vous devez également modifier le fichier d’implémentation de contrôle (. Fichier CPP pour inclure l’en-tête (. Fichier H) de la nouvelle classe de page de propriétés.
L’étape suivante implique la création de deux nouvelles ressources de chaîne qui fournissent un nom de type et une légende pour la nouvelle page de propriétés.
Pour ajouter de nouvelles ressources de chaîne à une page de propriétés
Une fois votre projet de contrôle ouvert, ouvrez l’affichage des ressources.
Double-cliquez sur le dossier Table de chaînes, puis double-cliquez sur la ressource de table de chaînes existante à laquelle vous souhaitez ajouter une chaîne.
La table de chaînes s’ouvre dans une fenêtre.
Sélectionnez la ligne vide à la fin de la table de chaînes et tapez le texte, ou légende, de la chaîne : par exemple, « Page de propriétés supplémentaire ».
Cette opération ouvre une page Propriétés de chaîne montrant les zones Légende et ID . La zone Légende contient la chaîne que vous avez tapée.
Dans la zone ID , sélectionnez ou tapez un ID pour la chaîne. Appuyez sur Entrée lorsque vous avez terminé.
Cet exemple utilise IDS_SAMPLE_ADDPAGE pour le nom de type de la nouvelle page de propriétés.
Répétez les étapes 3 et 4 à l’aide de IDS_SAMPLE_ADDPPG_CAPTION pour l’ID et la « page de propriétés supplémentaires » pour le légende.
Dans le . Le fichier CPP de votre nouvelle classe de page de propriétés (dans cet exemple),
CAddtlPropPage
modifiez laCAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry
propriété afin que IDS_SAMPLE_ADDPAGE soit passé par AfxOleRegisterPropertyPageClass, comme dans l’exemple suivant :BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister) { if (bRegister) return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(), m_clsid, IDS_SAMPLE_ADDPAGE); else return AfxOleUnregisterClass(m_clsid, NULL); }
Modifiez le constructeur de
CAddtlPropPage
sorte que IDS_SAMPLE_ADDPPG_CAPTION soit passé auCOlePropertyPage
constructeur, comme suit :CAddtlPropPage::CAddtlPropPage() : COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION) { }
Après avoir apporté les modifications nécessaires pour reconstruire votre projet et utiliser Test Container pour tester la nouvelle page de propriétés. Pour plus d’informations sur la façon d’accéder au conteneur de test, consultez la page Test des propriétés et des événements avec le conteneur de test .