Partager via


Contrôles ActiveX MFC : Implémentation avancée de propriété

Cet article décrit les rubriques associées à implémenter des propriétés avancées dans un contrôle ActiveX :

  • Propriétés en lecture seule ou en écriture seule

  • Le retour des codes d'erreur d'une propriété

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

L'Assistant Ajout de propriété propose 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 le projet de votre contrôle.

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

  3. Cliquez avec le bouton droit sur le nœud de l'interface pour votre contrôle (le deuxième nœud du nœud de bibliothèque) pour ouvrir le menu contextuel.

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

    Cela ouvre L'Assistant Ajout de propriété.

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

  6. Pour Implementation Type, cliquez sur Get/Set Methods.

  7. Dans la zone de 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 définie.Si vous souhaitez une propriété en écriture seule, désactivez le nom de la fonction GET.

  9. Cliquez sur Terminer.

Dans ce cas, l'Assistant Ajout de propriété insère la fonction SetNotSupported ou GetNotSupported dans l'entrée de table de dispatch à la place d'un ensemble ou d'un fonction GET normal.

Si vous souhaitez modifier une propriété existante comme étant en lecture seule ou en écriture seule, vous pouvez modifier la table de dispatch manuellement et supprimer tout ou le fonction GET inutile de la classe de contrôle.

Si vous souhaitez qu'une propriété soit conditionnellement en lecture seule ou en écriture seule (par exemple, uniquement lorsque votre contrôle s'exécute dans un mode spécifique), vous pouvez fournir l'ensemble ou le fonction Get, comme la normale, et appeler la fonction d' SetNotSupported ou d' 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 les données membres d' m_bReadOnlyMode est TRUE.Si FALSE, la propriété est défini par la nouvelle valeur.

Le retour des codes d'erreur d'une propriété

Pour indiquer qu'une erreur s'est produite lors d'une tentative d'obtenir ou définir une propriété, utilisez la fonction d' COleControl::ThrowError , qui prend SCODE (code d'état) comme paramètre.Vous pouvez utiliser SCODE intégré ou définir un des vôtres.Pour une liste d' SCODEintégré s et instruction pour définir SCODEpersonnalisé s, consultez Gestion des erreurs dans votre contrôle ActiveX dans les contrôles ActiveX d'article suivant : Rubriques avancées.

Les fonctions d'assistance existent pour la plupart des SCODEprédéfini par commune s, tel que COleControl::SetNotSupported, COleControl::GetNotSupported, et COleControl::SetNotPermitted.

[!REMARQUE]

   ThrowError est destiné à être utilisé uniquement comme moyen de retourner une erreur de la fonction get ou de l'ensemble d'une propriété ou d'une méthode automation.Ce sont les seuls temps que le gestionnaire d'exceptions approprié sera disponible sur la pile.

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

Voir aussi

Référence

COleControl, classe

Concepts

Contrôles ActiveX MFC

Contrôles ActiveX MFC : Propriétés

Contrôles ActiveX MFC : méthodes