Udostępnij za pośrednictwem


Kontrolki ActiveX MFC: dodawanie zdarzeń standardowych do kontrolki ActiveX

Zdarzenia magazynowe różnią się od zdarzeń niestandardowych, które są automatycznie wyzwalane przez klasę COleControl. COleControl zawiera wstępnie zdefiniowane funkcje składowe, które wyzwalają zdarzenia wynikające z typowych akcji. Niektóre typowe akcje zaimplementowane przez COleControl funkcję obejmują pojedyncze i dwukrotne kliknięcie kontrolki, zdarzeń klawiatury i zmian stanu przycisków myszy. Wpisy mapy zdarzeń dla zdarzeń zapasów są zawsze poprzedzone prefiksem EVENT_STOCK.

Zdarzenia magazynowe obsługiwane przez Kreatora dodawania zdarzeń

Klasa COleControl zawiera dziesięć zdarzeń zapasów wymienionych w poniższej tabeli. Zdarzenia, które chcesz określić w kontrolce, można określić za pomocą Kreatora dodawania zdarzeń.

Zdarzenia giełdowe

Wydarzenie Funkcja wypalania Komentarze
Kliknij przycisk void FireClick( ) Wyzwolony, gdy kontrolka przechwytuje mysz, zostanie odebrany dowolny komunikat BUTTONUP (lewy, środkowy lub prawy), a przycisk zostanie zwolniony za pomocą kontrolki. Akcje zdarzenia MouseDown i MouseUp występują przed tym zdarzeniem.

Wpis mapy zdarzeń: EVENT_STOCK_CLICK( )
DblClick void FireDblClick( ) Podobnie jak w przypadku odebrania komunikatu BUTTONDBLCLK .

Wpis mapy zdarzeń: EVENT_STOCK_DBLCLICK( )
Błąd void FireError( SCODEscode, LPCSTRlpszDescription, UINTnHelpID= 0 ) Wyzwolony, gdy wystąpi błąd w kontrolce ActiveX poza zakresem wywołania metody lub dostępu do właściwości.

Wpis mapy zdarzeń: EVENT_STOCK_ERROREVENT( )
Keydown void FireKeyDown( krótkinChar, krótkinShiftState) Wyzwolony po odebraniu komunikatu WM_SYSKEYDOWN lub WM_KEYDOWN .

Wpis mapy zdarzeń: EVENT_STOCK_KEYDOWN( )
Keypress void FireKeyPress( krótki*pnChar) Wyzwolony po odebraniu komunikatu WM_CHAR .

Wpis mapy zdarzeń: EVENT_STOCK_KEYPRESS( )
Keyup void FireKeyUp( krótkinChar, krótkinShiftState) Wyzwolony po odebraniu komunikatu WM_SYSKEYUP lub WM_KEYUP .

Wpis mapy zdarzeń: EVENT_STOCK_KEYUP( )
Mousedown void FireMouseDown( krótkinButton, krótkinShiftState, zmiennoprzecinkowy x, floaty) Zostanie wyzwolony, jeśli zostanie odebrany dowolny przycisk BUTTONDOWN (lewy, środkowy lub prawy). Mysz jest przechwytywana bezpośrednio przed wyzwoleniem tego zdarzenia.

Wpis mapy zdarzeń: EVENT_STOCK_MOUSEDOWN( )
Mousemove void FireMouseMove( krótkinButton, krótkinShiftState, float x, floaty) Wyzwolony po odebraniu komunikatu WM_MOUSEMOVE.

Wpis mapy zdarzeń: EVENT_STOCK_MOUSEMOVE( )
Mouseup void FireMouseUp( krótkinButton, krótkinShiftState, float x, floaty) Zostanie wyzwolony, jeśli zostanie odebrany dowolny przycisk BUTTONUP (lewy, środkowy lub prawy). Przechwytywanie myszy jest zwalniane przed wyzwoleniem tego zdarzenia.

Wpis mapy zdarzeń: EVENT_STOCK_MOUSEUP( )
ReadyStateChange void FireReadyStateChange( ) Wyzwolony po przejściu kontrolki do następnego stanu gotowości ze względu na ilość odebranych danych.

Wpis mapy zdarzeń: EVENT_STOCK_READYSTATECHANGE( )

Dodawanie zdarzenia stockowego przy użyciu Kreatora dodawania zdarzeń

Dodanie zdarzeń magazynowych wymaga mniejszej ilości pracy niż dodanie zdarzeń niestandardowych, ponieważ wyzwalanie rzeczywistego zdarzenia jest obsługiwane automatycznie przez klasę bazową . COleControl Poniższa procedura dodaje zdarzenie giełdowe do kontrolki, która została opracowana przy użyciu Kreatora kontrolek ActiveX MFC. Zdarzenie o nazwie KeyPress jest uruchamiane po naciśnięciu klawisza, a kontrolka jest aktywna. Ta procedura może również służyć do dodawania innych zdarzeń giełdowych. Zastąp wybraną nazwę zdarzenia stockowego dla platformy KeyPress.

Aby dodać zdarzenie stockowe KeyPress za pomocą Kreatora dodawania zdarzeń

  1. Załaduj projekt kontrolki.

  2. W widoku klasy kliknij prawym przyciskiem myszy klasę kontrolki ActiveX, aby otworzyć menu skrótów.

  3. W menu skrótów kliknij pozycję Dodaj , a następnie kliknij pozycję Dodaj zdarzenie.

    Spowoduje to otwarcie Kreatora dodawania zdarzeń.

  4. Z listy rozwijanej Nazwa zdarzenia wybierz pozycję KeyPress.

  5. Kliknij przycisk Finish (Zakończ).

Dodawanie zmian Kreatora zdarzeń dla zdarzeń giełdowych

Ponieważ zdarzenia zapasów są obsługiwane przez klasę bazową kontrolki, Kreator dodawania zdarzeń nie zmienia deklaracji klasy w żaden sposób. Dodaje zdarzenie do mapy zdarzeń kontrolki i tworzy wpis w pliku . Plik IDL. Następujący wiersz jest dodawany do mapy zdarzeń kontrolki znajdującej się w implementacji klasy sterowania (. Plik CPP):

EVENT_STOCK_KEYPRESS()

Dodanie tego kodu powoduje wyzwolenie zdarzenia KeyPress po odebraniu komunikatu WM_CHAR, a kontrolka jest aktywna. Zdarzenie KeyPress można uruchamiać w innym czasie, wywołując funkcję wypalania (na przykład FireKeyPress) z poziomu kodu sterującego.

Kreator dodawania zdarzeń dodaje następujący wiersz kodu do kontrolki . Plik IDL:

[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);

Ten wiersz kojarzy zdarzenie KeyPress ze standardowym identyfikatorem wysyłania i umożliwia kontenerowi przewidywanie zdarzenia KeyPress.

Zobacz też

Kontrolki ActiveX MFC
Kontrolki ActiveX MFC: metody
Klasa COleControl