ActiveX-Steuerelementcontainer: Behandeln von Ereignissen eines ActiveX-Steuerelements
In diesem Artikel wird die Verwendung des Eigenschaftenfensters (in der Klassenansicht) zum Installieren von Ereignishandlern für ActiveX-Steuerelemente in einem ActiveX-Steuerelementcontainer erläutert. Die Ereignishandler werden verwendet, um Benachrichtigungen (vom Steuerelement) bestimmter Ereignisse zu empfangen und als Reaktion eine Aktion auszuführen. Diese Benachrichtigung wird als "Auslösen" des Ereignisses bezeichnet.
Wichtig
ActiveX ist eine Legacytechnologie, die nicht für neue Software verwendet werden sollte. Weitere Informationen zu modernen Technologien, die ActiveX ablösen, finden Sie unter ActiveX-Steuerelemente.
Hinweis
In diesem Artikel wird ein dialogbasiertes ActiveX-Steuerelementcontainerprojekt namens "Container" und ein eingebettetes Steuerelement namens "Circ" als Beispiele in den Prozeduren und Code verwendet.
Mithilfe der Schaltfläche "Ereignisse" im Eigenschaftenfenster (in der Klassenansicht) können Sie eine Zuordnung von Ereignissen erstellen, die in Ihrer ActiveX-Steuerelementcontaineranwendung auftreten können. Diese Zuordnung, die als "Ereignissenkenzuordnung" bezeichnet wird, wird erstellt und Standard von Visual C++ enthalten, wenn Sie der Steuerelementcontainerklasse Ereignishandler hinzufügen. Jeder Ereignishandler, der mit einem Ereigniszuordnungseintrag implementiert wird, ordnet ein bestimmtes Ereignis einer Containerereignishandlerelementfunktion zu. Diese Ereignishandlerfunktion wird aufgerufen, wenn das angegebene Ereignis vom ActiveX-Steuerelementobjekt ausgelöst wird.
Weitere Informationen zu Ereignissenkenzuordnungen finden Sie unter Event Sink Karten in der Klassenbibliotheksreferenz.
Ereignishandleränderungen am Projekt
Wenn Sie das Eigenschaftenfenster verwenden, um Ereignishandler hinzuzufügen, wird eine Ereignissenkezuordnung deklariert und in Ihrem Projekt definiert. Die folgenden Anweisungen werden dem Steuerelement hinzugefügt. CPP-Datei beim ersten Hinzufügen eines Ereignishandlers. Dieser Code deklariert eine Ereignissenkenzuordnung für die Dialogfeldklasse (in diesem Fall CContainerDlg
):
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
END_EVENTSINK_MAP()
Wenn Sie das Eigenschaftenfenster zum Hinzufügen von Ereignissen verwenden, wird der Ereignissenkenzuordnung ein Ereigniszuordnungseintrag (ON_EVENT
) hinzugefügt, und der Implementierung () des Containers wird eine Ereignishandlerfunktion hinzugefügt. CPP)-Datei.
Im folgenden Beispiel wird ein Ereignishandler deklariert, der für das Ereignis des Circ-Steuerelements ClickIn
aufgerufen wirdOnClickInCircCtrl
:
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1,
VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
Darüber hinaus wird die folgende Vorlage der CContainerDlg
Klassenimplementierung (. CPP)-Datei für die Ereignishandlerelementfunktion:
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;
}
Weitere Informationen zu Ereignissenkenmakros finden Sie unter Ereignissenken-Karten in der Klassenbibliotheksreferenz.
So erstellen Sie eine Ereignishandlerfunktion
Wählen Sie in der Klassenansicht die Dialogfeldklasse aus, die das ActiveX-Steuerelement enthält. In diesem Beispiel verwenden wir
CContainerDlg
.Klicken Sie im Fenster Eigenschaften auf die Schaltfläche Ereignisse.
Wählen Sie im Eigenschaftenfenster die Steuerelement-ID des eingebetteten ActiveX-Steuerelements aus. In diesem Beispiel verwenden wir
IDC_CIRCCTRL1
.Das Eigenschaftenfenster zeigt eine Liste von Ereignissen an, die vom eingebetteten ActiveX-Steuerelement ausgelöst werden können. Jede Elementfunktion, die fett dargestellt wird, weist bereits Handlerfunktionen zu.
Wählen Sie das Ereignis aus, das von der Dialogklasse behandelt werden soll. Wählen Sie in diesem Beispiel "Klicken" aus.
Wählen Sie <im Dropdown-Listenfeld auf der rechten Seite "ClickCircctrl1 hinzufügen"> aus.
Doppelklicken Sie in der Klassenansicht auf die neue Handlerfunktion, um zum Ereignishandlercode in der Implementierung zu springen (. CPP) Datei von
CContainerDlg
.