Partager via


Contrôles ActiveX MFC : ajout de méthodes personnalisées

Les méthodes personnalisées diffèrent des méthodes de stock dans lesquelles elles ne sont pas déjà implémentées par COleControl. Vous devez fournir l’implémentation pour chaque méthode personnalisée que vous ajoutez à votre contrôle.

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.

Un utilisateur de contrôle ActiveX peut appeler une méthode personnalisée à tout moment pour effectuer des actions spécifiques au contrôle. L’entrée de mappage de répartition pour les méthodes personnalisées est de la forme DISP_FUNCTION.

Ajout d’une méthode personnalisée avec l’Assistant Ajouter une méthode

La procédure suivante illustre l’ajout de la méthode personnalisée PtInCircle au code squelette d’un contrôle ActiveX. PtInCircle détermine si les coordonnées passées au contrôle sont à l’intérieur ou à l’extérieur du cercle. Cette même procédure peut également être utilisée pour ajouter d’autres méthodes personnalisées. Remplacez le nom de votre méthode personnalisée et ses paramètres par le nom et les paramètres de la méthode PtInCircle.

Remarque

Cet exemple utilise la InCircle fonction de l’article Events. Pour plus d’informations sur cette fonction, consultez l’article Contrôles ActiveX MFC : Ajout d’événements personnalisés à un contrôle ActiveX.

Pour ajouter la méthode personnalisée PtInCircle à l’aide de l’Assistant Ajout de méthode

  1. Chargez le projet du 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 méthode.

    L’Assistant Ajouter une méthode s’ouvre.

  5. Dans la zone Nom de la méthode, tapez PtInCircle.

  6. Dans la zone Nom interne, tapez le nom de la fonction interne de la méthode ou utilisez la valeur par défaut (dans ce cas, PtInCircle).

  7. Dans la zone Type de retour, cliquez sur VARIANT_BOOL pour le type de retour de la méthode.

  8. À l’aide des contrôles Type de paramètre et Nom de paramètre, ajoutez un paramètre appelé xCoord (type OLE_XPOS_PIXELS).

  9. À l’aide des contrôles Type de paramètre et Nom de paramètre, ajoutez un paramètre appelé yCoord (type OLE_YPOS_PIXELS).

  10. Cliquez sur Terminer.

Ajouter des modifications de l’Assistant Méthode pour les méthodes personnalisées

Lorsque vous ajoutez une méthode personnalisée, l’Assistant Ajout de méthode apporte des modifications à l’en-tête de classe de contrôle (. H) et implémentation (. Fichiers CPP. La ligne suivante est ajoutée à la déclaration de mappage de répartition dans l’en-tête de classe de contrôle (. Fichier H) :

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Ce code déclare un gestionnaire de méthode dispatch appelé PtInCircle. Cette fonction peut être appelée par l’utilisateur de contrôle à l’aide du nom PtInCircleexterne.

La ligne suivante est ajoutée au contrôle. Fichier IDL :

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Cette ligne affecte à la PtInCircle méthode un numéro d’ID spécifique, la position de la méthode dans la liste des méthodes et propriétés Add Method Wizard. Étant donné que l’Assistant Ajout de méthode a été utilisé pour ajouter la méthode personnalisée, l’entrée pour laquelle elle a été ajoutée automatiquement au projet. Fichier IDL.

En outre, la ligne suivante, située dans l’implémentation (. Le fichier CPP) de la classe de contrôle est ajouté au mappage de répartition du contrôle :

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

La macro DISP_FUNCTION mappe la méthode PtInCircle à la fonction de gestionnaire du contrôle, PtInCircledéclare le type de retour à VARIANT_BOOL et déclare deux paramètres de type VTS_XPOS_PIXELS et VTS_YPOSPIXELS à passer.PtInCircle

Enfin, l’Assistant Ajouter une méthode ajoute la fonction CSampleCtrl::PtInCircle stub au bas de l’implémentation du contrôle (. Fichier CPP). Pour PtInCircle fonctionner comme indiqué précédemment, il doit être modifié comme suit :

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

Voir aussi

Contrôles ActiveX MFC
Vue Classe et Explorateur d’objets, icônes