Conteneurs de contrôles ActiveX : gestion d'événements à partir d'un contrôle ActiveX

Cet article décrit l’utilisation de la fenêtre Propriétés (en mode Classe) pour installer des gestionnaires d’événements pour les contrôles ActiveX dans un conteneur de contrôles ActiveX. Les gestionnaires d’événements sont utilisés pour recevoir des notifications (du contrôle) de certains événements et effectuer une action en réponse. Cette notification est appelée « déclenchement » de l’événement.

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.

Remarque

Cet article utilise un projet de conteneur de contrôle ActiveX basé sur un dialogue nommé Conteneur et un contrôle incorporé nommé Circ comme exemples dans les procédures et le code.

À l’aide du bouton Événements dans la fenêtre Propriétés (en mode Classe), vous pouvez créer une carte d’événements pouvant se produire dans votre application conteneur de contrôle ActiveX. Cette carte, appelée « mappage du récepteur d’événements », est créée et gérée par Visual C++ lorsque vous ajoutez des gestionnaires d’événements à la classe de conteneur de contrôle. Chaque gestionnaire d’événements, implémenté avec une entrée de mappage d’événements, mappe un événement spécifique à une fonction membre du gestionnaire d’événements de conteneur. Cette fonction de gestionnaire d’événements est appelée lorsque l’événement spécifié est déclenché par l’objet de contrôle ActiveX.

Pour plus d’informations sur les mappages de récepteur d’événements, consultez Cartes récepteur d’événements dans la référence de bibliothèque de classes.

Modifications du gestionnaire d’événements dans le projet

Lorsque vous utilisez la fenêtre Propriétés pour ajouter des gestionnaires d’événements, un mappage récepteur d’événements est déclaré et défini dans votre projet. Les instructions suivantes sont ajoutées au contrôle. Fichier CPP la première fois qu’un gestionnaire d’événements est ajouté. Ce code déclare un mappage récepteur d’événements pour la classe de boîte de dialogue (dans ce cas, CContainerDlg:

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
END_EVENTSINK_MAP()

Lorsque vous utilisez la fenêtre Propriétés pour ajouter des événements, une entrée de mappage d’événements (ON_EVENT) est ajoutée au mappage du récepteur d’événements et une fonction de gestionnaire d’événements est ajoutée à l’implémentation du conteneur (. Fichier CPP).

L’exemple suivant déclare un gestionnaire d’événements, appelé OnClickInCircCtrl, pour l’événement du ClickIn contrôle Circ :

BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1,
         VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

En outre, le modèle suivant est ajouté à l’implémentation de CContainerDlg classe (. Fichier CPP) pour la fonction membre du gestionnaire d’événements :

BOOL CContainerDlg::OnClickInCircctrl1(OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY)
{
   // use nX and nY here
   TRACE(_T("nX = %d, nY = %d\n"), nX, nY);
   return TRUE;
}

Pour plus d’informations sur les macros de récepteur d’événements, consultez Cartes récepteur d’événements dans la référence de bibliothèque de classes.

Pour créer une fonction de gestionnaire d’événements

  1. Dans l’affichage de classes, sélectionnez la classe de boîte de dialogue qui contient le contrôle ActiveX. Pour cet exemple, utilisez CContainerDlg.

  2. Dans la fenêtre Propriétés, cliquez sur le bouton Événements.

  3. Dans la fenêtre Propriétés , sélectionnez l’ID de contrôle du contrôle ActiveX incorporé. Pour cet exemple, utilisez IDC_CIRCCTRL1.

    La fenêtre Propriétés affiche une liste d’événements qui peuvent être déclenchés par le contrôle ActiveX incorporé. Toutes les fonctions membres affichées en gras ont déjà des fonctions de gestionnaire qui lui sont affectées.

  4. Sélectionnez l’événement que vous souhaitez que la classe de boîte de dialogue gère. Pour cet exemple, sélectionnez Cliquer.

  5. Dans la zone de liste déroulante située à droite, sélectionnez <Ajouter> ClickCircctrl1.

  6. Double-cliquez sur la nouvelle fonction de gestionnaire à partir de l’affichage de classes pour accéder au code du gestionnaire d’événements dans l’implémentation (. Fichier CPP) de CContainerDlg.

Voir aussi

Conteneurs de contrôles ActiveX