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.
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.
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.
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 table de dispatch pour les méthodes personnalisées se présente sous la forme DISP_FUNCTION.
Ajout d’une méthode personnalisée avec l’Assistant d'Ajout de 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
Chargez le 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 méthode.
L'assistant Ajout de méthode s'ouvre.
Dans la zone Nom de la méthode , tapez PtInCircle.
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).
Dans la zone Type de retour , cliquez sur VARIANT_BOOL pour le type de retour de la méthode.
À l’aide des contrôles Type de paramètre et Nom de paramètre, ajoutez un paramètre appelé xCoord (type OLE_XPOS_PIXELS).
À l’aide des contrôles Type de paramètre et Nom de paramètre, ajoutez un paramètre appelé yCoord (type OLE_YPOS_PIXELS).
Cliquez sur Terminer.
L'assistant d'ajout de méthode change pour intégrer les méthodes personnalisées
Lorsque vous ajoutez une méthode personnalisée, l’Assistant d'Ajout de méthode effectue des modifications à l’en-tête de la classe de contrôle (.H) et aux fichiers d'implémentation (.CPP). La ligne suivante est ajoutée à la déclaration de la table de dispatch dans le fichier d'en-tête de la classe de contrôle (.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 fichier .IDL du contrôle :
[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 celle-ci a été ajoutée automatiquement au fichier .IDL du projet.
De plus, la ligne suivante, située dans le fichier d'implémentation (.CPP) de la classe de contrôle, est ajoutée à la table de dispatch 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 d’ajout de méthode ajoute la fonction stub CSampleCtrl::PtInCircle 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
Icônes Affichage de classes et Explorateur d’objets