Ereigniszuordnungen
Jedes Mal, wenn ein Steuerelement seinen Container benachrichtigen möchte, dass eine Aktion (die vom Steuerelemententwickler bestimmt wird) stattgefunden hat (z. B. ein Tastenanschlag, Mausklick oder eine Änderung des Zustands des Steuerelements), ruft es eine Ereignisauslösungsfunktion auf. Diese Funktion benachrichtigt den Steuerelementcontainer, dass einige wichtige Aktionen aufgetreten sind, indem das zugehörige Ereignis ausgelöst wird.
Die Microsoft Foundation Class Library bietet ein Programmiermodell, das für das Auslösen von Ereignissen optimiert ist. In diesem Modell werden "Ereigniszuordnungen" verwendet, um festzulegen, welche Funktionen auslösen, welche Ereignisse für ein bestimmtes Steuerelement ausgelöst werden. Ereigniszuordnungen enthalten ein Makro für jedes Ereignis. Beispielsweise könnte eine Ereigniskarte, die ein Stock Click-Ereignis auslöst, wie folgt aussehen:
BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()
Das EVENT_STOCK_CLICK
Makro gibt an, dass das Steuerelement jedes Mal ein Stock Click-Ereignis auslöst, wenn ein Mausklick erkannt wird. Eine detailliertere Auflistung anderer Aktienereignisse finden Sie im Artikel ActiveX-Steuerelemente: Ereignisse. Makros sind auch verfügbar, um benutzerdefinierte Ereignisse anzugeben.
Obwohl Ereigniszuordnungsmakros wichtig sind, fügen Sie sie in der Regel nicht direkt ein. Dies liegt daran, dass das Eigenschaftenfenster (in der Klassenansicht) Ereigniszuordnungseinträge in Den Quelldateien automatisch erstellt, wenn Sie es zum Zuordnen von Ereignis ausgelösten Funktionen zu Ereignissen verwenden. Jedes Mal, wenn Sie einen Ereigniszuordnungseintrag bearbeiten oder hinzufügen möchten, können Sie das Eigenschaftenfenster verwenden.
Um Ereigniszuordnungen zu unterstützen, stellt MFC die folgenden Makros bereit:
Ereigniszuordnungsmakros
Ereigniszuordnungsdeklaration und Abgrenzung
Name | Beschreibung |
---|---|
DECLARE_EVENT_MAP | Deklariert, dass eine Ereigniszuordnung in einer Klasse zum Zuordnen von Ereignissen zu Ereignis ausgelösten Funktionen verwendet wird (muss in der Klassendeklaration verwendet werden). |
BEGIN_EVENT_MAP | Beginnt mit der Definition einer Ereigniszuordnung (muss in der Klassenimplementierung verwendet werden). |
END_EVENT_MAP | Beendet die Definition einer Ereigniszuordnung (muss in der Klassenimplementierung verwendet werden). |
Ereigniszuordnungsmakros
Name | Beschreibung |
---|---|
EVENT_CUSTOM | Gibt an, welche Ereignis ausgelöste Funktion das angegebene Ereignis auslöst. |
EVENT_CUSTOM_ID | Gibt an, welche Ereignis ausgelöste Funktion das angegebene Ereignis mit einer bestimmten Verteiler-ID auslöst. |
Nachrichtenzuordnungsmakros
Name | Beschreibung |
---|---|
ON_OLEVERB | Gibt ein benutzerdefiniertes Verb an, das vom OLE-Steuerelement behandelt wird. |
ON_STDOLEVERB | Überschreibt eine Standardverbzuordnung des OLE-Steuerelements. |
DECLARE_EVENT_MAP
Jede COleControl
abgeleitete Klasse in Ihrem Programm kann eine Ereigniszuordnung bereitstellen, um die Ereignisse anzugeben, die ihr Steuerelement auslöst.
DECLARE_EVENT_MAP()
Hinweise
Verwenden Sie das DECLARE_EVENT_MAP Makro am Ende der Klassendeklaration. Verwenden Sie dann in der datei .cpp, die die Memberfunktionen für die Klasse definiert, das BEGIN_EVENT_MAP Makro, Makroeinträge für jedes Ereignis des Steuerelements und das END_EVENT_MAP Makro, um das Ende der Ereignisliste zu deklarieren.
Weitere Informationen zu Ereigniszuordnungen finden Sie im Artikel ActiveX-Steuerelemente: Ereignisse.
Anforderungen
Header afxctl.h
BEGIN_EVENT_MAP
Beginnt mit der Definition der Ereigniszuordnung.
BEGIN_EVENT_MAP(theClass, baseClass)
Parameter
theClass
Gibt den Namen der Steuerelementklasse an, deren Ereigniszuordnung dies ist.
baseClass
Gibt den Namen der Basisklasse der Klasse an.
Hinweise
Starten Sie in der Implementierungsdatei (.cpp), die die Memberfunktionen für Ihre Klasse definiert, die Ereigniszuordnung mit dem BEGIN_EVENT_MAP-Makro, fügen Sie dann Makroeinträge für jedes Ihrer Ereignisse hinzu, und schließen Sie die Ereigniszuordnung mit dem END_EVENT_MAP Makro ab.
Weitere Informationen zu Ereigniszuordnungen und dem BEGIN_EVENT_MAP-Makro finden Sie im Artikel ActiveX-Steuerelemente: Ereignisse.
Anforderungen
Header afxctl.h
END_EVENT_MAP
Verwenden Sie das END_EVENT_MAP Makro, um die Definition Ihrer Ereigniszuordnung zu beenden.
END_EVENT_MAP()
Anforderungen
Header afxctl.h
EVENT_CUSTOM
Definiert einen Ereigniszuordnungseintrag für ein benutzerdefiniertes Ereignis.
EVENT_CUSTOM(pszName, pfnFire, vtsParams)
Parameter
pszName
Der Name des Ereignisses.
pfnFire
Der Name der Ereignis ausgelösten Funktion.
vtsParams
Eine durch Leerzeichen getrennte Liste einer oder mehrerer Konstanten, die die Parameterliste der Funktion angeben.
Hinweise
Der Parameter "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_COLOR VTS_FONT
Gibt eine Liste mit einer 32-Bit-Ganzzahl an, die einen RGB-Farbwert darstellt, gefolgt von einem Zeiger auf die IFontDisp
Schnittstelle eines OLE-Schriftartobjekts.
Die VTS_
Konstanten und ihre Bedeutungen sind wie folgt:
Symbol | Parametertyp |
---|---|
VTS_I2 | short |
VTS_I4 | long |
VTS_R4 | float |
VTS_R8 | double |
VTS_COLOR | OLE_COLOR |
VTS_CY | WÄHRUNG |
VTS_DATE | DATE |
VTS_BSTR | const verkohlen* |
VTS_DISPATCH | LPDISPATCH |
VTS_FONT | IFontDispatch* |
VTS_HANDLE | HANDLE |
VTS_SCODE | SCODE |
VTS_BOOL | BOOL |
VTS_VARIANT | const VARIANT* |
VTS_PVARIANT | VARIANT* |
VTS_UNKNOWN | LPUNKNOWN |
VTS_OPTEXCLUSIVE | OLE_OPTEXCLUSIVE |
VTS_PICTURE | IPictureDisp* |
VTS_TRISTATE | OLE_TRISTATE |
VTS_XPOS_PIXELS | OLE_XPOS_PIXELS |
VTS_YPOS_PIXELS | OLE_YPOS_PIXELS |
VTS_XSIZE_PIXELS | OLE_XSIZE_PIXELS |
VTS_YSIZE_PIXELS | OLE_YSIZE_PIXELS |
TS_XPOS_HIMETRIC | OLE_XPOS_HIMETRIC |
VTS_YPOS_HIMETRIC | OLE_YPOS_HIMETRIC |
VTS_XSIZE_HIMETRIC | OLE_XSIZE_HIMETRIC |
VTS_YSIZE_HIMETRIC | OLE_YSIZE_HIMETRIC |
Hinweis
Für alle Variantentypen wurden zusätzliche Variantenkonstanten definiert, mit Ausnahme von VTS_FONT und VTS_PICTURE, die einen Zeiger auf die Variant-Datenkonstante bereitstellen. Diese Konstanten werden mithilfe der VTS_Pconstantname
Konvention benannt. Beispielsweise ist VTS_PCOLOR ein Zeiger auf eine VTS_COLOR Konstante.
Anforderungen
Header afxctl.h
EVENT_CUSTOM_ID
Definiert eine Ereignis ausgelöste Funktion für ein benutzerdefiniertes Ereignis, das zur durch dispid angegebenen Verteiler-ID gehört.
EVENT_CUSTOM_ID(
pszName,
dispid,
pfnFire,
vtsParams)
Parameter
pszName
Der Name des Ereignisses.
dispid
Die Verteiler-ID, die vom Steuerelement beim Auslösen des Ereignisses verwendet wird.
pfnFire
Der Name der Ereignis ausgelösten Funktion.
vtsParams
Eine variable Liste von Parametern, die an den Steuerelementcontainer übergeben werden, wenn das Ereignis ausgelöst wird.
Hinweise
Das Argument vtsParams ist eine durch Leerzeichen getrennte Liste von Werten aus den VTS_
Konstanten. Mindestens einer dieser Werte, die durch Leerzeichen getrennt sind, nicht durch Kommas, gibt die Parameterliste der Funktion an. Zum Beispiel:
VTS_COLOR VTS_FONT
Gibt eine Liste mit einer 32-Bit-Ganzzahl an, die einen RGB-Farbwert darstellt, gefolgt von einem Zeiger auf die IFontDisp
Schnittstelle eines OLE-Schriftartobjekts.
Eine Liste der VTS_
Konstanten finden Sie unter EVENT_CUSTOM.
Anforderungen
Header afxctl.h
ON_OLEVERB
Dieses Makro definiert einen Nachrichtenzuordnungseintrag, der einem benutzerdefinierten Verb eine bestimmte Memberfunktion des Steuerelements zuordnet.
ON_OLEVERB(idsVerbName, memberFxn)
Parameter
idsVerbName
Die Zeichenfolgenressourcen-ID des Verbnamens.
memberFxn
Die Funktion, die vom Framework aufgerufen wird, wenn das Verb aufgerufen wird.
Hinweise
Der Ressourcen-Editor kann verwendet werden, um benutzerdefinierte Verbnamen zu erstellen, die der Zeichenfolgentabelle hinzugefügt werden.
Der Funktionsprototyp für memberFxn lautet:
BOOL memberFxn(
LPMSG lpMsg,
HWND hWndParent,
LPCRECT lpRect);
Die Werte der Parameter lpMsg, hWndParent und lpRect stammen aus den entsprechenden Parametern der IOleObject::DoVerb
Memberfunktion.
Anforderungen
Header afxole.h
ON_STDOLEVERB
Verwenden Sie dieses Makro, um das Standardverhalten eines Standardverbs außer Kraft zu setzen.
ON_STDOLEVERB(iVerb, memberFxn)
Parameter
iVerb
Der Standardverbindex für das Verb, das überschrieben wird.
memberFxn
Die Funktion, die vom Framework aufgerufen wird, wenn das Verb aufgerufen wird.
Hinweise
Der Standardverbindex ist des Formulars OLEIVERB_
, gefolgt von einer Aktion. OLEIVERB_SHOW, OLEIVERB_HIDE und OLEIVERB_UIACTIVATE sind einige Beispiele für Standardverben.
Eine Beschreibung des Funktionsprototyps, der als memberFxn-Parameter verwendet werden soll, finden Sie unter ON_OLEVERB.
Anforderungen
Header afxole.h