Contrôles ActiveX MFC : implémentation des propriétés avancées

Cet article décrit les rubriques relatives à l’implémentation de propriétés avancées dans un contrôle ActiveX.

Important

ActiveX est une technologie héritée qui ne doit pas être utilisée pour le nouveau développement. Pour plus d’informations sur les technologies modernes qui remplacent ActiveX, consultez Contrôles ActiveX.

Propriétés en lecture seule et en écriture seule

L’Assistant Ajouter une propriété fournit une méthode rapide et facile pour implémenter des propriétés en lecture seule ou en écriture seule pour le contrôle.

Pour implémenter une propriété en lecture seule ou en écriture seule

  1. Chargez votre projet de contrôle.

  2. Dans l’Affichage de classes, développez le nœud Bibliothèque de votre contrôle.

  3. Cliquez sur le nœud Interface de votre contrôle (le deuxième nœud du nœud Bibliothèque) pour ouvrir le menu contextuel.

  4. Dans le menu contextuel, cliquez sur Ajouter , puis sur Ajouter une propriété.

    L’Assistant Ajouter une propriété s’ouvre.

  5. Dans la zone Nom de la propriété, tapez le nom de votre propriété.

  6. Pour Type d’implémentation, cliquez sur Méthodes Get/Set.

  7. Dans la zone Type de propriété, sélectionnez le type approprié pour la propriété.

  8. Si vous souhaitez une propriété en lecture seule, désactivez le nom de la fonction Set. Si vous souhaitez une propriété en écriture seule, désactivez le nom de la fonction Get.

  9. Cliquez sur Terminer.

Lorsque vous procédez ainsi, l’Assistant Ajouter une propriété insère la fonction SetNotSupported ou GetNotSupported dans l’entrée de mappage de répartition à la place d’une fonction Set ou Get normale.

Si vous souhaitez modifier une propriété existante en lecture seule ou en écriture seule, vous pouvez modifier la carte de répartition manuellement et supprimer la fonction Set ou Get inutile de la classe de contrôle.

Si vous souhaitez qu’une propriété soit en lecture seule ou en écriture seule (par exemple, uniquement lorsque votre contrôle fonctionne en mode particulier), vous pouvez fournir la fonction Set ou Get, comme normale, et appeler la ou GetNotSupported la SetNotSupported fonction le cas échéant. Par exemple :

void CMyAxUICtrl::SetMyProperty(SHORT newVal)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   if (m_bReadOnlyMode)   //  some control-specific state
   {
      SetNotSupported();
   }
   else
   {
      m_iPropVal = newVal;   //  set property as normal
      SetModifiedFlag();
   }
}

Cet exemple de code appelle SetNotSupported si le membre de données a la m_bReadOnlyMode valeur TRUE. Si la valeur est FALSE, la propriété est définie sur la nouvelle valeur.

Renvoi de codes d’erreur à partir d’une propriété

Pour indiquer qu’une erreur s’est produite lors de la tentative d’obtention ou de définition d’une propriété, utilisez la COleControl::ThrowError fonction, qui prend un SCODE (code d’état) comme paramètre. Vous pouvez utiliser un SCODE prédéfini ou définir l’un de vos propres. Pour obtenir la liste des SCODEs prédéfinis et des instructions pour définir des SCODEs personnalisés, consultez La gestion des erreurs dans votre contrôle ActiveX dans l’article Contrôles ActiveX : Rubriques avancées.

Les fonctions d’assistance existent pour les SCODEs prédéfinis les plus courants, tels que COleControl ::SetNotSupported, COleControl ::GetNotSupported et COleControl ::SetNotPermitted.

Remarque

ThrowError est destiné à être utilisé uniquement comme moyen de retourner une erreur à partir de la fonction Get ou Set d’une propriété ou d’une méthode d’automatisation. Il s’agit des seules fois où le gestionnaire d’exceptions approprié sera présent sur la pile.

Pour plus d’informations sur la création de rapports d’exceptions dans d’autres domaines du code, consultez COleControl ::FireError et la section Gestion des erreurs dans votre contrôle ActiveX dans l’article Contrôles ActiveX : Rubriques avancées.

Voir aussi

Contrôles ActiveX MFC
Contrôles ActiveX MFC : propriétés
Contrôles ActiveX MFC : méthodes
COleControl, classe