Contrôles ActiveX MFC : ajouter des méthodes personnalisées
Les méthodes diffèrent des méthodes boursières en ce sens qu'elles ne sont pas encore implémentées par COleControl.Vous devez fournir l'implémentation pour chaque méthode personnalisée que vous ajoutez à votre contrôle.
L'utilisateur d'un contrôle ActiveX peut appeler une méthode personnalisée à tout moment pour exécuter des actions spécifiques au contrôle.L'entrée de table de dispatch pour les méthodes personnalisées a la forme DISP_FUNCTION.
Ajouter une méthode personnalisée avec l'Assistant Ajout de méthode
La procédure suivante montre comment ajouter la méthode personnalisée PtInCircle au code squelette du contrôle ActiveX.PtInCircle détermine à l'intérieur de si les coordonnées passées au contrôle sont ou à l'extérieur de le contrôle circle.Cette même procédure peut également être utilisée pour ajouter d'autres méthodes personnalisées.Substituez le nom de méthode personnalisé et ses paramètres pour le nom et les paramètres de la méthode de PtInCircle.
[!REMARQUE]
Cet exemple utilise la fonction d' InCircle des événements d'article.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 de PtInCircle l'Assistant Ajout de méthode
Chargez le projet du contrôle.
Dans l'Affichage de classes, développez le nœud de la bibliothèque de votre contrôle.
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.
Dans le menu contextuel, cliquez sur Ajouter puis cliquez sur Ajouter une méthode.
Cela ouvre l'Assistant Ajout de méthode.
Dans la zone de Nom de la méthode , tapez PtInCircle.
Dans la zone de 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 de Type de retour , cliquez sur VARIANT_BOOL pour le type de retour de la méthode.
Utilisation de contrôles de Type de paramètre et de Nom du paramètre , ajoutez un paramètre appelé xCoord (type OLE_XPOS_PIXELS).
Utilisation de contrôles de Type de paramètre et de Nom du paramètre , ajoutez un paramètre appelé yCoord(type OLE_YPOS_PIXELS).
Cliquez sur Terminer.
Modifications de l'Assistant Ajout de 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 contrôle de classe (. H) et fichiers d'implémentation (.CPP).La ligne suivante est ajoutée à la déclaration de table de dispatch dans l'en-tête de contrôle de classe (. h) fichier :
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Ce code déclare une méthode PtInCircleappelé par gestionnaire d'expédition.Cette fonction peut être appelée par l'utilisateur de contrôle à l'aide de le nom externe PtInCircle.
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 assigne à la méthode de PtInCircle un numéro d'ID spécifique, la position de la méthode dans les méthodes de l'Assistant Ajout de méthode et la liste des propriétés.Dans la mesure où l'Assistant Ajout de méthode a été utilisé pour ajouter la méthode personnalisée, l'entrée pour celui-ci a été ajoutée automatiquement au fichier .IDL du projet.
En outre, 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 d' DISP_FUNCTION mappe la méthode PtInCircle à la fonction gestionnaire du contrôle, PtInCircle, déclare le type de retour pour être VARIANT_BOOL, et déclare deux paramètres de type VTS_XPOS_PIXELS et VTS_YPOSPIXELS à passer à PtInCircle.
Enfin, l'Assistant Ajout de méthode ajoute la fonction CSampleCtrl::PtInCircle stub au bas du fichier d'implémentation du contrôle (.CPP).Pour qu' PtInCircle fonctionne comme mentionné 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
Référence
Affichage de classes et Explorateur d'objets, icônes