Partager via


Contrôles ActiveX MFC : ajouter une autre page de propriétés personnalisée

Occasionnellement, un contrôle ActiveX a des propriétés qui peuvent raisonnablement tenir 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 explique l'ajout de nouvelles pages de propriétés à un contrôle ActiveX qui a déjà au moins une page de propriétés. Pour plus d'informations sur l'ajout de pages de propriétés (police, image, ou couleur), consultez l'article Contrôles ActiveX MFC : En utilisant les pages de propriétés stock.

Les procédures suivantes utilisent une infrastructure de contrôle ActiveX d'exemple créée par l'Assistant Contrôle ActiveX. Par conséquent, les noms de classes et les identificateurs sont uniques dans cet exemple.

Pour plus d'informations sur l'utilisation des pages de propriétés d'un contrôle ActiveX, consultez les articles suivants :

Pour insérer un modèle de propriétés dans votre projet

  1. Avec votre projet de contrôle ouvert, ouvrez l'affichage des ressources dans l'espace de travail du projet.

  2. Cliquez avec le bouton droit sur Affichage des Ressources pour ouvrir le menu contextuel et cliquez sur Ajouter une ressource.

  3. Développez le nœud de Boîte de dialogue, puis sélectionnez IDD_OLE_PROPPAGE_SMALL.

  4. Cliquez sur New pour ajouter l'objet ressource à votre projet.

  5. Sélectionnez le nouveau modèle de la page des propriétés pour actualiser la fenêtre Propriétés.

  6. Entrez une nouvelle valeur pour la propriété ID. Cet exemple utilise IDD_PROPPAGE_NEWPAGE.

  7. Cliquez sur Enregistrer dans la barre d'outils.

Pour associer le nouveau modèle à une classe

  1. Ouvrez l'Affichage de classes.

  2. Cliquez avec le bouton droit sur Affichage de classes pour ouvrir le menu contextuel.

  3. Dans le menu contextuel, cliquez sur Ajouter, puis sur Ajouter une classe.

    La boîte de dialogue Ajouter Classe s'affiche.

  4. Double-cliquez sur le modèle de Classe MFC.

  5. Dans la zone Nom de la classe dans Assistant Classe MFC, tapez un nom pour la nouvelle classe de boîte de dialogue. (Dans cet exemple, CAddtlPropPage)

  6. Si vous souhaitez modifier les noms de fichier, cliquez sur Modifier. Tapez le nom de votre implémentation et fichiers d'en-tête, ou acceptez les noms par défaut.

  7. Dans la zone Classe de base , sélectionnez COlePropertyPage.

  8. Dans la zone de ID de boîte de dialogue , sélectionnez IDD_PROPPAGE_NEWPAGE.

  9. Cliquez sur Terminer pour créer la classe.

Pour autoriser l'accès utilisateurs du contrôle à cette nouvelle page de propriétés, apportez les modifications suivantes à la section de macro d'ID de la page de propriétés du contrôle (trouvé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 du contrôle (.CPP) pour ajouter le fichier d'en-tête (. H) de la nouvelle classe de page de propriétés.

L'étape suivante consiste à créer 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 type string à la page de propriétés

  1. À votre projet de contrôle ouvert, ouvrez l'affichage des ressources.

  2. Double-cliquez sur le dossier Table de chaînes puis double-cliquez sur la ressource existante du tableau de chaînes à laquelle vous souhaitez ajouter une chaîne.

    Cela ouvre la table de chaînes dans une fenêtre.

  3. Sélectionnez la ligne vide à la fin de la table de chaînes et tapez le texte, ou la légende, de la chaîne : par exemple, « page de propriétés supplémentaires. »

    Cela affiche une page String Properties qui indique les zones de Légende et d'ID. La zone de Légende contient la chaîne que vous avez tapée.

  4. Dans la zone d'ID, sélectionnez ou tapez un ID pour la chaîne. Appuyez sur entrée dans lorsque vous avez terminé.

    Cet exemple utilise IDS_SAMPLE_ADDPAGE pour le nom de la nouvelle page de propriétés.

  5. Répétez les étapes 3 et 4 en utilisant IDS_SAMPLE_ADDPPG_CAPTION pour l'ID et « page de propriétés supplémentaires » pour la légende.

  6. Dans le fichier .cpp de votre nouvelle classe de page de propriétés (dans cet exemple, CAddtlPropPage) modifiez CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry afin que IDS_SAMPLE_ADDPAGE soit transmis 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);
    }
    
  7. Modifiez le constructeur de CAddtlPropPage afin que IDS_SAMPLE_ADDPPG_CAPTION soit passée au constructeur COlePropertyPage, comme suit :

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

Après avoir effectué à la reconstruction nécessaire, régénérez votre projet et utilisez Container Test pour tester la nouvelle page de propriétés. Pour plus d'informations sur la manière d'accéder à Test Container, consultez Test des propriétés et des événements à l'aide de Test Container.

Voir aussi

Concepts

Contrôles ActiveX MFC