MFC-ActiveX-Steuerelemente: Hinzufügen von vordefinierten Ereignissen zu einem ActiveX-Steuerelement
Vordefinierte Ereignisse unterscheiden sich von benutzerdefinierten Ereignissen darin, dass sie automatisch durch Klasse COleControl ausgelöst werden.COleControl enthält vordefinierte Memberfunktionen, die Ereignisse auslösen, die sich aus den allgemeinen Aktionen.Einige allgemeine Aktionen, die von COleControl implementiert werden, enthalten und einzel- Doppelklicke des Steuerelements, und Tastaturereignissen den Änderungen im Zustand der Maustasten.Ereigniszuordnungs Dateisystemeinträgen für vordefinierte Ereignisse werden immer vom EVENT_STOCK Präfix vorangestellt.
Vordefinierte Ereignisse unterstützt vom Assistenten zum Hinzufügen von Ereignissen
Die COleControl-Klasse stellt zehn vordefinierte Ereignisse in der folgenden Tabelle aufgeführt.Sie können die Ereignisse angeben, die im Steuerelement mithilfe Assistent zum Hinzufügen von Ereignissen soll.
Vordefinierte Ereignisse
Ereignis |
Funktion aus |
Kommentare |
---|---|---|
Auszuwählende Option |
ungültiges FireClick () |
Wird ausgelöst, wenn die Maus vom Steuerelement erfasst, entweder BUTTONUP (Links, Rechts oder mittig) - Nachricht empfangen wird, und die Schaltfläche ist über dem Steuerelement freigegeben.Die vordefinierten Ereignisse treten Ereignisse MouseUp und das MouseDown-Ereignis vor diesem Ereignis auf. Eintrag Ereigniszuordnungs: EVENT_STOCK_CLICK( ) |
DblClick |
ungültiges FireDblClick () |
Wie jedoch auf dem BUTTONDBLCLK ausgelöst, wenn eine Nachricht empfangen wird. Eintrag Ereigniszuordnungs: EVENT_STOCK_DBLCLICK( ) |
Fehler |
void FireError( SCODE scode, LPCSTR lpszDescription, UINT nHelpID = 0 ) |
Wird ausgelöst, wenn ein Fehler innerhalb des ActiveX-Steuerelements außerhalb des Bereichs eines Methodenaufrufs oder Eigenschaft zugriffs auftritt. Eintrag Ereigniszuordnungs: EVENT_STOCK_ERROREVENT( ) |
KeyDown |
void FireKeyDown( short nChar, short nShiftState ) |
Wird ausgelöst, wenn eine WM_SYSKEYDOWN oder WM_KEYDOWN Nachricht empfangen wird. Eintrag Ereigniszuordnungs: EVENT_STOCK_KEYDOWN( ) |
KeyPress |
void FireKeyPress( short* pnChar ) |
Wird ausgelöst, wenn eine WM_CHAR Nachricht empfangen wird. Eintrag Ereigniszuordnungs: EVENT_STOCK_KEYPRESS( ) |
KeyUp |
void FireKeyUp( short nChar, short nShiftState ) |
Wird ausgelöst, wenn eine WM_SYSKEYUP oder WM_KEYUP Nachricht empfangen wird. Eintrag Ereigniszuordnungs: EVENT_STOCK_KEYUP( ) |
das MouseDown-Ereignis |
void FireMouseDown( short nButton, short nShiftState, float x, float y ) |
Ausgelöstes falls vorhanden BUTTONDOWN (belassen, oder mittig rechts) wurde empfangen.Die Maus erfasst wird unmittelbar vor dem Auslösen dieses Ereignisses. Eintrag Ereigniszuordnungs: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove |
void FireMouseMove( short nButton, short nShiftState, float x, float y ) |
Wird ausgelöst, wenn eine WM_MOUSEMOVE Nachricht empfangen wird. Eintrag Ereigniszuordnungs: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp-Ereignis |
void FireMouseUp( short nButton, short nShiftState, float x, float y ) |
Ausgelöstes falls vorhanden BUTTONUP (belassen, oder mittig rechts) wurde empfangen.Die Mausauswahl wird freigegeben, bevor dieses Ereignis ausgelöst wird. Eintrag Ereigniszuordnungs: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange |
ungültiges FireReadyStateChange () |
Wird ausgelöst, wenn Zustand Bereit wechselt zum nächsten Steuerelement aufgrund der Datenmenge wird. Eintrag Ereigniszuordnungs: EVENT_STOCK_READYSTATECHANGE( ) |
Ein vordefiniertes Ereignis mithilfe des Assistenten zum Hinzufügen von Ereignissen hinzu
Das Hinzufügen von vordefinierten Ereignissen erfordert weniger Aufwand als benutzerdefinierten Ereignissen, da die tatsächlichen Auslösen des Ereignisses automatisch von der Basisklasse behandelt werden COleControl hinzugefügt werden.Im folgenden Verfahren wird ein vordefiniertes Ereignis ein Steuerelement hinzu, das mithilfe MFC-ActiveX-Steuerelement-Assistent entwickelt wurde.Das Ereignis, KeyPress, die aufgerufen wird, wenn eine Taste gedrückt wird und das Steuerelement ist aktiv.Diese Prozedur kann auch verwendet werden, um andere vordefinierte Ereignisse hinzuzufügen.Ersetzen Sie den ausgewählten vordefinierten Ereignisnamen für KeyPress.
Um das Lager Sie auf Hinzufügen KeyPress Ereignis mithilfe des Assistenten zum Hinzufügen von Ereignissen
Laden Sie das Projekt des Steuerelements.
Klicken Sie in der Klassenansicht mit der rechten Maustaste auf die ActiveX-Steuerelementklasse, um das Kontextmenü zu öffnen.
Klicken Sie im Kontextmenü auf Hinzufügen und klicken Sie dann auf Ereignis hinzufügen.
Damit öffnet den Assistenten zum Hinzufügen von Ereignissen.
In der Ereignisname Dropdownliste den Eintrag KeyPress.
Klicken Sie auf Fertig stellen.
Assistent zum Hinzufügen von Ereignissenen-Änderungen für vordefinierte Ereignisse
Da vordefinierte Ereignisse über die Basisklasse des Steuerelements behandelt werden, ändert der Assistent zum Hinzufügen von Ereignissen nicht die Klassendeklaration in jeder Hinsicht.Sie fügt das Ereignis der Ereigniszuordnung des Steuerelements hinzu und stellt einen Eintrag in der IDL-Datei.In der folgenden Zeile wird der Ereigniszuordnung des Steuerelements hinzugefügt, in der Implementierung der Steuerelementklassen (.CPP):
EVENT_STOCK_KEYPRESS()
Diesen Code hinzugefügt werden, löst ein KeyPress-Ereignis WM_CHAR aus, wenn eine Nachricht empfangen wird und das Steuerelement aktiv ist.Das KeyPress-Ereignis kann, indem ihre Auslösung (z. B. das Feature für FireKeyPress) aus dem Steuerungscode zu anderen Zeiten ausgelöst werden, aufruft.
Der Assistent zum Hinzufügen von Ereignissen die folgende Codezeile fügt der IDL-Datei des Steuerelements hinzu:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
Diese Zeile ordnet das KeyPress-Ereignis mit der standardmäßigen dispatch-id zu und ermöglicht es dem Container, um das KeyPress-Ereignis vorauszusehen.