Partager via


conteneurs de contrôle ActiveX : événements de gestion d'un contrôle ActiveX

Cet article explique comment utiliser la fenêtre Propriétés pour configurer les 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 exécuter une action en réponse. Cette notification est appelée "déclenchement" de l'événement.

Notes

Cet article utilise un projet basé sur les boîtes de dialogue des conteneurs de contrôles ActiveX nommé Container et un contrôle incorporé nommé Circ comme exemples dans les procédures et le code.

En utilisant le bouton d'événements dans la fenêtre de propriétés, vous pouvez créer une carte des événements qui peuvent se produire dans votre application conteneur de contrôles ActiveX. Cette carte, appelée « table de récepteurs 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 table d'événement, mappe un événement spécifique à une fonction membre du gestionnaire d'événements du conteneur. Cette fonction du 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 tables de récepteurs d'événements, consultez Tables de récepteurs d'événements dans la référence de la bibliothèque de classes.

Modifications du gestionnaire d'événements au projet

Lorsque vous utilisez la fenêtre Propriétés pour ajouter les gestionnaires d'événements, une table de récepteurs d'événements est déclarée et définie dans votre projet. Les instructions suivantes sont ajoutées au fichier .cpp de contrôle la première fois qu'un gestionnaire d'événements est ajouté. Ce code déclare une table de récepteurs d'événements pour la classe de la 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 table d'événement (ON_EVENT) est ajoutée à la table de récepteurs d'événements et une fonction gestionnaire d'événements est ajoutée au fichier d'implémentation du conteneur (.CPP).

L'exemple suivant déclare un gestionnaire d'événements, appelé OnClickInCircCtrl, pour l'événement ClickIn du contrôle de 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é au fichier de l'implémentation de la classe CContainerDlg (.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écepteurs d'événements, consultez Tables de récepteurs d'événements dans la référence de la bibliothèque de classes.

Pour créer une fonction gestionnaire d'événements

  1. De l'Affichage de classes, sélectionnez la classe de la 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 du contrôle du contrôle ActiveX incorporé. Utilisez IDC_CIRCCTRL1 pour cet exemple.

    La fenêtre Propriétés affiche une liste d'événements qui peuvent être déclenchés par le contrôle ActiveX incorporé. Toute fonction membre apparaissant en gras a déjà une fonction gestionnaire affectée.

  4. Sélectionnez l'événement que la classe de la boîte de dialogue doit gérer. Pour cet exemple, sélectionnez "Click".

  5. Dans la liste déroulante à droite, selectionnez <Ajouter> OnLButtonDown.

  6. Double-cliquez sur la nouvelle fonction gestionnaire d'Affichage de classes pour accéder au code du gestionnaire d'événements dans le fichier d'implémentation (.CPP) de CContainerDlg.

Voir aussi

Concepts

conteneurs de contrôle ActiveX