Freigeben über


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 COleControlabgeleitete 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 CPP-Datei, 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. 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 constChar*
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. 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

Siehe auch

Makros und Globalen