Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit les rubriques relatives à l’implémentation de propriétés avancées dans un contrôle ActiveX.
Importante
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
Chargez votre projet de contrôle.
Dans l’Affichage de classes, développez le nœud Bibliothèque de votre contrôle.
Cliquez avec le bouton droit sur le nœud d’interface de votre contrôle (le deuxième nœud du nœud de bibliothèque) pour ouvrir le menu contextuel.
Dans le menu contextuel, cliquez sur Ajouter , puis sur Ajouter une propriété.
Cette opération ouvre l'Assistant Ajout de propriété.
Dans la zone Nom de la propriété, tapez le nom de votre propriété.
Pour le type d’implémentation, cliquez sur Get/Set Methods.
Dans la zone Type de propriété , sélectionnez le type approprié pour la propriété.
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.
Cliquez sur Terminer.
Lorsque vous procédez ainsi, l'assistant Ajout de propriété insère la fonction SetNotSupported ou GetNotSupported dans l'entrée de table de dispatch à 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 dans un mode particulier), vous pouvez fournir la fonction Set ou Get, comme d'habitude, et appeler la fonction SetNotSupported ou GetNotSupported 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_bReadOnlyModevaleur 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
Classe COleControl