Ereignissenkenzuordnungen
Wenn ein eingebettetes OLE-Steuerelement ein Ereignis auslöst, empfängt der Container des Steuerelements das Ereignis mithilfe eines Mechanismus, der als "Ereignissenkenzuordnung" bezeichnet wird, die von MFC bereitgestellt wird. Diese Ereignissenkezuordnung bestimmt Handlerfunktionen für jedes bestimmte Ereignis sowie Parameter dieser Ereignisse. Weitere Informationen zu Ereignissenkenzuordnungen finden Sie im Artikel ActiveX-Steuerelementcontainer.
Name | Beschreibung |
---|---|
BEGIN_EVENTSINK_MAP | Startet die Definition einer Ereignissenkenzuordnung. |
DECLARE_EVENTSINK_MAP | Deklariert eine Ereignissenkenzuordnung. |
END_EVENTSINK_MAP | Beendet die Definition einer Ereignissenkenzuordnung. |
ON_EVENT | Definiert einen Ereignishandler für ein bestimmtes Ereignis. |
ON_EVENT_RANGE | Definiert einen Ereignishandler für ein bestimmtes Ereignis, das aus einer Reihe von OLE-Steuerelementen ausgelöst wird. |
ON_EVENT_REFLECT | Empfängt Ereignisse, die vom Steuerelement ausgelöst werden, bevor sie vom Container des Steuerelements behandelt werden. |
ON_PROPNOTIFY | Definiert einen Handler zum Behandeln von Eigenschaftenbenachrichtigungen aus einem OLE-Steuerelement. |
ON_PROPNOTIFY_RANGE | Definiert einen Handler für die Behandlung von Eigenschaftenbenachrichtigungen aus einer Reihe von OLE-Steuerelementen. |
ON_PROPNOTIFY_REFLECT | Empfängt Eigenschaftenbenachrichtigungen, die vom Steuerelement gesendet werden, bevor sie vom Container des Steuerelements behandelt werden. |
Beginnt mit der Definition der Ereignissenkenzuordnung.
BEGIN_EVENTSINK_MAP(theClass, baseClass)
theClass
Gibt den Namen der Steuerelementklasse an, deren Ereignissenkenzuordnung dies ist.
baseClass
Gibt den Namen der Basisklasse der Klasse an.
Starten Sie in der Implementierungsdatei (.cpp), die die Memberfunktionen für Ihre Klasse definiert, die Ereignissenkenzuordnung mit dem BEGIN_EVENTSINK_MAP Makro, fügen Sie dann Makroeinträge für jedes Ereignis hinzu, über das sie benachrichtigt werden soll, und schließen Sie die Ereignissenkenzuordnung mit dem END_EVENTSINK_MAP Makro ab.
Weitere Informationen zu Ereignissenkenzuordnungen und OLE-Steuerelementcontainern finden Sie im Artikel ActiveX-Steuerelementcontainer.
Header afxdisp.h
Ein OLE-Container kann eine Ereignissenkezuordnung bereitstellen, um die Ereignisse anzugeben, über die Ihr Container benachrichtigt wird.
DECLARE_EVENTSINK_MAP()
Verwenden Sie das DECLARE_EVENTSINK_MAP Makro am Ende der Klassendeklaration. Dann in der . CPP-Datei, die die Memberfunktionen für die Klasse definiert, das BEGIN_EVENTSINK_MAP Makro, Makroeinträge für jedes der Ereignisse, die benachrichtigt werden sollen, und das END_EVENTSINK_MAP Makro, um das Ende der Ereignissenkenliste zu deklarieren.
Weitere Informationen zu Ereignissenkenzuordnungen finden Sie im Artikel ActiveX-Steuerelementcontainer.
Header afxwin.h
Beendet die Definition der Ereignissenkenzuordnung.
END_EVENTSINK_MAP()
Header afxdisp.h
Verwenden Sie das ON_EVENT Makro, um eine Ereignishandlerfunktion für ein Ereignis zu definieren, das von einem OLE-Steuerelement ausgelöst wird.
ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams)
theClass
Die Klasse, zu der diese Ereignissenkennkarte gehört.
id
Die Steuerelement-ID des OLE-Steuerelements.
dispid
Die Verteiler-ID des Ereignisses, das vom Steuerelement ausgelöst wird.
pfnHandler
Zeiger auf eine Memberfunktion, die das Ereignis behandelt. Diese Funktion sollte über einen BOOL-Rückgabetyp und Parametertypen verfügen, die den Parametern des Ereignisses entsprechen (siehe vtsParams). Die Funktion sollte WAHR zurückgeben, um anzugeben, dass das Ereignis behandelt wurde. andernfalls FALSE.
vtsParams
Eine Abfolge von VTS_ Konstanten, die die Typen der Parameter für das Ereignis angibt. Dies sind die gleichen Konstanten, die in Verteilerzuordnungseinträgen wie DISP_FUNCTION verwendet werden.
Das Argument vtsParams ist eine durch Leerzeichen getrennte Liste von Werten aus den VTS_ Konstanten. Mindestens einer dieser Werte, die durch Leerzeichen (keine Kommas) getrennt sind, gibt die Parameterliste der Funktion an. Zum Beispiel:
VTS_I2 VTS_BOOL
Gibt eine Liste an, die eine kurze ganze Zahl gefolgt von einer BOOL enthält.
Eine Liste der VTS_ Konstanten finden Sie unter EVENT_CUSTOM.
Header afxdisp.h
Verwenden Sie das makro ON_EVENT_RANGE, um eine Ereignishandlerfunktion für ein Ereignis zu definieren, das von jedem OLE-Steuerelement ausgelöst wird, das eine Steuerelement-ID innerhalb eines zusammenhängenden Bereichs von IDs aufweist.
ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler, vtsParams)
theClass
Die Klasse, zu der diese Ereignissenkennkarte gehört.
idFirst
Die Steuerelement-ID des ersten OLE-Steuerelements im Bereich.
idLast
Die Steuerelement-ID des letzten OLE-Steuerelements im Bereich.
dispid
Die Verteiler-ID des Ereignisses, das vom Steuerelement ausgelöst wird.
pfnHandler
Zeiger auf eine Memberfunktion, die das Ereignis behandelt. Diese Funktion sollte über einen BOOL-Rückgabetyp, einen ersten Parameter vom Typ UINT (für die Steuerelement-ID) und zusätzliche Parametertypen verfügen, die den Parametern des Ereignisses entsprechen (siehe vtsParams). Die Funktion sollte WAHR zurückgeben, um anzugeben, dass das Ereignis behandelt wurde. andernfalls FALSE.
vtsParams
Eine Abfolge von VTS_ Konstanten, die die Typen der Parameter für das Ereignis angibt. Die erste Konstante sollte vom Typ VTS_I4 sein, für die Steuerelement-ID. Dies sind die gleichen Konstanten, die in Verteilerzuordnungseinträgen wie DISP_FUNCTION verwendet werden.
Das Argument vtsParams ist eine durch Leerzeichen getrennte Liste von Werten aus den VTS_ Konstanten. Mindestens einer dieser Werte, die durch Leerzeichen (keine Kommas) getrennt sind, gibt die Parameterliste der Funktion an. Zum Beispiel:
VTS_I2 VTS_BOOL
Gibt eine Liste an, die eine kurze ganze Zahl gefolgt von einer BOOL enthält.
Eine Liste der VTS_ Konstanten finden Sie unter EVENT_CUSTOM.
Im folgenden Beispiel wird ein Ereignishandler für das MouseDown-Ereignis veranschaulicht, das für drei Steuerelemente implementiert ist ( IDC_MYCTRL1 bis IDC_MYCTRL3). Die Ereignishandlerfunktion , OnRangeMouseDown
wird in der Headerdatei der Dialogklasse ( CMyDlg
) als:
BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
long x, long y);
Der folgende Code wird in der Implementierungsdatei der Dialogklasse definiert.
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
Header afxdisp.h
Das ON_EVENT_REFLECT Makro empfängt bei Verwendung in der Ereignissenkezuordnung der Wrapperklasse eines OLE-Steuerelements Ereignisse, die vom Steuerelement ausgelöst werden, bevor sie vom Container des Steuerelements behandelt werden.
ON_EVENT_REFLECT(theClass, dispid, pfnHandler, vtsParams)
theClass
Die Klasse, zu der diese Ereignissenkennkarte gehört.
dispid
Die Verteiler-ID des Ereignisses, das vom Steuerelement ausgelöst wird.
pfnHandler
Zeiger auf eine Memberfunktion, die das Ereignis behandelt. Diese Funktion sollte einen BOOL-Rückgabetyp und Parametertypen aufweisen, die den Parametern des Ereignisses entsprechen (siehe vtsParams). Die Funktion sollte WAHR zurückgeben, um anzugeben, dass das Ereignis behandelt wurde. andernfalls FALSE.
vtsParams
Eine Abfolge von VTS_ Konstanten, die die Typen der Parameter für das Ereignis angibt. Dies sind die gleichen Konstanten, die in Verteilerzuordnungseinträgen wie DISP_FUNCTION verwendet werden.
Das Argument vtsParams ist eine durch Leerzeichen getrennte Liste von Werten aus den VTS_ Konstanten.
Mindestens einer dieser Werte, die durch Leerzeichen (keine Kommas) getrennt sind, gibt die Parameterliste der Funktion an. Zum Beispiel:
VTS_I2 VTS_BOOL
Gibt eine Liste an, die eine kurze ganze Zahl gefolgt von einer BOOL enthält.
Eine Liste der VTS_ Konstanten finden Sie unter EVENT_CUSTOM.
Header afxdisp.h
Verwenden Sie das makro ON_PROPNOTIFY, um einen Ereignissenkennzuordnungseintrag zum Behandeln von Eigenschaftenbenachrichtigungen aus einem OLE-Steuerelement zu definieren.
ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)
theClass
Die Klasse, zu der diese Ereignissenkennkarte gehört.
id
Die Steuerelement-ID des OLE-Steuerelements.
dispid
Die Verteiler-ID der Eigenschaft, die an der Benachrichtigung beteiligt ist.
pfnRequest
Zeiger auf eine Memberfunktion, die die OnRequestEdit
Benachrichtigung für diese Eigenschaft behandelt. Diese Funktion sollte einen BOOL-Rückgabetyp und einen BOOL-Parameter* aufweisen. Diese Funktion sollte den Parameter auf TRUE festlegen, damit die Eigenschaft geändert werden kann und FALSE nicht zulässig ist. Die Funktion sollte WAHR zurückgeben, um anzugeben, dass die Benachrichtigung behandelt wurde. andernfalls FALSE.
pfnChanged
Zeiger auf eine Memberfunktion, die die OnChanged
Benachrichtigung für diese Eigenschaft behandelt. Die Funktion sollte einen BOOL-Rückgabetyp und einen UINT-Parameter aufweisen. Die Funktion sollte WAHR zurückgeben, um anzugeben, dass die Benachrichtigung verarbeitet wurde. andernfalls FALSE.
Das Argument vtsParams ist eine durch Leerzeichen getrennte Liste von Werten aus den VTS_ Konstanten. Mindestens einer dieser Werte, die durch Leerzeichen (keine Kommas) getrennt sind, gibt die Parameterliste der Funktion an. Zum Beispiel:
VTS_I2 VTS_BOOL
Gibt eine Liste an, die eine kurze ganze Zahl gefolgt von einer BOOL enthält.
Eine Liste der VTS_ Konstanten finden Sie unter EVENT_CUSTOM.
Verwenden Sie das makro ON_PROPNOTIFY_RANGE, um einen Ereignissenkennzuordnungseintrag für die Behandlung von Eigenschaftenbenachrichtigungen von jedem OLE-Steuerelement mit einer Steuerelement-ID innerhalb eines zusammenhängenden Bereichs von IDs zu definieren.
ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)
theClass
Die Klasse, zu der diese Ereignissenkennkarte gehört.
idFirst
Die Steuerelement-ID des ersten OLE-Steuerelements im Bereich.
idLast
Die Steuerelement-ID des letzten OLE-Steuerelements im Bereich.
dispid
Die Verteiler-ID der Eigenschaft, die an der Benachrichtigung beteiligt ist.
pfnRequest
Zeiger auf eine Memberfunktion, die die OnRequestEdit
Benachrichtigung für diese Eigenschaft behandelt. Diese Funktion sollte über einen BOOL
Rückgabetyp und parameter BOOL*
UINT
verfügen. Die Funktion sollte den Parameter auf TRUE festlegen, damit die Eigenschaft geändert werden kann, und FALSE nicht zulässig ist. Die Funktion sollte WAHR zurückgeben, um anzugeben, dass die Benachrichtigung verarbeitet wurde. andernfalls FALSE.
pfnChanged
Zeiger auf eine Memberfunktion, die die OnChanged
Benachrichtigung für diese Eigenschaft behandelt. Die Funktion sollte einen BOOL
Rückgabetyp und einen UINT
Parameter aufweisen. Die Funktion sollte WAHR zurückgeben, um anzugeben, dass die Benachrichtigung verarbeitet wurde. andernfalls FALSE.
Header afxdisp.h
Das ON_PROPNOTIFY_REFLECT Makro, das in der Ereignissenkenzuordnung der Wrapperklasse eines OLE-Steuerelements verwendet wird, empfängt Eigenschaftenbenachrichtigungen, die vom Steuerelement gesendet werden, bevor sie vom Container des Steuerelements behandelt werden.
ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)
theClass
Die Klasse, zu der diese Ereignissenkennkarte gehört.
dispid
Die Verteiler-ID der Eigenschaft, die an der Benachrichtigung beteiligt ist.
pfnRequest
Zeiger auf eine Memberfunktion, die die OnRequestEdit
Benachrichtigung für diese Eigenschaft behandelt. Diese Funktion sollte einen BOOL-Rückgabetyp und einen BOOL-Parameter* aufweisen. Diese Funktion sollte den Parameter auf TRUE festlegen, damit die Eigenschaft geändert werden kann und FALSE nicht zulässig ist. Die Funktion sollte WAHR zurückgeben, um anzugeben, dass die Benachrichtigung behandelt wurde. andernfalls FALSE.
pfnChanged
Zeiger auf eine Memberfunktion, die die OnChanged
Benachrichtigung für diese Eigenschaft behandelt. Die Funktion sollte einen BOOL-Rückgabetyp und keine Parameter aufweisen. Die Funktion sollte WAHR zurückgeben, um anzugeben, dass die Benachrichtigung behandelt wurde. andernfalls FALSE.
Header afxdisp.h