Sobald Sie alle erforderlichen Steuerelemente in das zusammengesetzte Steuerelement eingefügt haben, ist der nächste Schritt Hinzufügen neuer Funktionen. Diese neue Funktionalität fällt in der Regel in zwei Kategorien:
Für den Zweck und den Rahmen dieses Artikels sprengen konzentriert sich der restliche Teil des in diesem Abschnitt ausschließlich auf Event-handling.
Für jedes enthaltenen Steuerelements, die gewünschte zum Behandeln von Ereignissen aus, müssen Sie eine Ereignis-Dispatch-Schnittstelle implementieren, durch Ableiten von der IDispEventImpl -Vorlage-Klasse. Diese Ableitung ist in der Deklaration des zusammengesetzten Steuerelements durchgeführt und besteht aus zwei Parametern
Die folgende Codezeile zu Beispiel, gefunden in der Basisklasse-Deklaration deklariert eine IDispEventImpl -Schnittstelle für ein Steuerelement ( IDC_CIRCCTRL1 ), für die ein zusammengesetztes Steuerelement-Klasse ( CMyCompositeCtrl ).
öffentliche IDispEventImpllt; IDC_CIRCCTL1, CMyCompositeCtrl & gt;
Nachdem die Versendung zu Ereignisklassen für jedes enthaltenen Steuerelements deklarieren, müssen Sie das zusammengesetzte Steuerelement-Objekt eine Ereignisbehandlungszuordnung hinzu. Diese Karte wird zwei Dinge erreicht.:
Der Ereignisbehandlungszuordnung wird mit mehreren vordefinierten Makros implementiert.:
BEGIN_SINK_MAP()CtrlName)
Deklariert den Beginn der Ereignisbehandlungszuordnung für das zusammengesetzte Steuerelement CtrlName.
SINK_ENTRY()CtrlID, DispIID, DispID, EventHandler)
Deklariert die Handlerfunktion (EventHandler) für das angegebene Ereignis (DispID), der die Dispatch-Schnittstelle DispIID, für das Steuerelement identifiziert durch CtrlID.
Erklärt das Ende der Ereignisbehandlungszuordnung für das zusammengesetzte Steuerelement CtrlName.
Im folgenden Codebeispiel wird (befindet sich in der.CPP-Datei des zusammengesetzten Steuerelements) erklärt eine Ereignisbehandlungszuordnung für das CMyCompositeCtrl Objekt. Zwei Ereignishandler für zwei enthaltenen Steuerelemente deklariert ( IDC_CIRCCTL1 und IDC_CIRCCTL2 ). Das Click-Ereignis für beide Steuerelemente erfolgt über die OnClick_CircCtrl1 und OnClick_CircCtrl2 Funktionen.
BEGI&N_SINK_MAP(CMyCompositeCtrl)
Nbsp; SINK_ENTRY (IDC_CIRCCTL1, DISPID_CLICK, OnClick_CircCtrl1)
SINK_ENTRY (IDC_CIRCCTL2, DISPID_CLICK, OnClick_CircCtrl2)
END_SINK_MAP()
Sobald Sie die Ereignisbehandlungszuordnung deklariert haben, fahren Sie mit die Ereignishandlern für das zusammengesetzte Steuerelement implementieren.
In der Erklärung des Schrittes Event Sink Karte haben Sie eine neue Karte, die zwei Ereignishandler für die zwei enthaltenen Circ-Steuerelemente deklariert hinzugefügt. Es ist nun Zeit, diese Handler implementieren. Das Format ist wie folgt:
retVal __stdcall EventHandler (Args)
{
&Nbsp; //Handle entsprechend Ereignisauslösung
}
wo retVal ist der Rückgabewert des Ereignishandlers, EventHandler ist der Name der Funktion Handler, und args ist eine optionale Liste der Argumente für das Ereignis. Dieser Name muss mit einem des Ereignisses übereinstimmen, die in das zusammengesetzte Steuerelement Ereignisbehandlungszuordnung Handler deklariert.
Im folgenden Codebeispiel definiert einen Ereignishandler (das Click-Ereignis) für das enthaltene Steuerelement identifiziert durchIDC_CIRCCTRL1:
void __stdcall OnClick_CircCtrl1)
{
&Nbsp; MessageBox ("Click-Ereignis, das ausgelöst wird!", "CircCtl1", MB_OK);
}
Fügen Sie Ereignishandler für die verbleibenden Einträge im Ereignisprotokoll Karte des zusammengesetzten Steuerelements sinken.
Bevor das zusammengesetzte Steuerelement vollständig aktiviert wird, wird jedes enthaltenen Steuerelements, dessen Ereignisse Sie behandeln, für ausgehende Schnittstellen, wie z. B. ein Ereignis-Dispatch-Schnittstelle abgefragt. Wenn Schnittstellen gefunden werden, Verbindungen hergestellt sind, und ein Verweis auf die ausgehende Schnittstelle dient zum Behandeln von Ereignissen aus dem Steuerelement. Dieses Verfahren wird als "Beratung des Steuerelements" bezeichnet und erfolgt automatisch durch das zusammengesetzte Steuerelement-Objekt unter Verwendung der Ereignisbehandlungszuordnung, bei der Initialisierung des zusammengesetzten Steuerelements.
Nachdem der Benutzer das Dialogfeld geschlossen hat, werden alle gespeicherten Verweise auf Ausgangsschnittstellen aus enthaltenen Steuerelemente bereinigt. Dies wird als "abzumelden das Steuerelement" bezeichnet und erfolgt ebenfalls automatisch durch das zusammengesetzte Steuerelement.