Udostępnij za pośrednictwem


Mapy zdarzeń

Za każdym razem, gdy kontrolka chce powiadomić kontener o tym, że wystąpiła pewna akcja (określona przez dewelopera kontrolki) (na przykład naciśnięcie klawisza, kliknięcie myszy lub zmiana stanu kontrolki) wywołuje funkcję wyzwalania zdarzeń. Ta funkcja powiadamia kontener sterowania, że wystąpiła pewna ważna akcja przez wyzwolenie powiązanego zdarzenia.

Biblioteka klas programu Microsoft Foundation oferuje model programowania zoptymalizowany pod kątem wyzwalania zdarzeń. W tym modelu "mapy zdarzeń" służą do wyznaczania, które funkcje uruchamiają zdarzenia dla określonej kontrolki. Mapy zdarzeń zawierają jedno makro dla każdego zdarzenia. Na przykład mapa zdarzeń, która uruchamia zdarzenie stock Click, może wyglądać następująco:

BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()

Makro wskazuje, że kontrolka EVENT_STOCK_CLICK będzie uruchamiać zdarzenie Stock Click za każdym razem, gdy wykryje kliknięcie myszą. Aby uzyskać bardziej szczegółową listę innych zdarzeń giełdowych, zobacz artykuł Kontrolki ActiveX: Zdarzenia. Makra są również dostępne do wskazywania zdarzeń niestandardowych.

Chociaż makra mapy zdarzeń są ważne, zazwyczaj nie należy ich bezpośrednio wstawiać. Dzieje się tak, ponieważ okno Właściwości (w widoku klasy) automatycznie tworzy wpisy mapy zdarzeń w plikach źródłowych, gdy są używane do kojarzenia funkcji wyzwalania zdarzeń z zdarzeniami. Za każdym razem, gdy chcesz edytować lub dodać wpis mapy zdarzeń, możesz użyć okna Właściwości .

Aby obsługiwać mapy zdarzeń, MFC udostępnia następujące makra:

Makra mapy zdarzeń

Deklaracja mapy zdarzeń i demarcation

Nazwa/nazwisko opis
DECLARE_EVENT_MAP Deklaruje, że mapa zdarzeń będzie używana w klasie do mapowania zdarzeń na funkcje wyzwalania zdarzeń (muszą być używane w deklaracji klasy).
BEGIN_EVENT_MAP Rozpoczyna definicję mapy zdarzeń (musi być używana w implementacji klasy).
END_EVENT_MAP Kończy definicję mapy zdarzeń (musi być używana w implementacji klasy).

Makra mapowania zdarzeń

Nazwa/nazwisko opis
EVENT_CUSTOM Wskazuje, która funkcja wyzwalania zdarzeń spowoduje wyzwolenie określonego zdarzenia.
EVENT_CUSTOM_ID Wskazuje, która funkcja wyzwalania zdarzeń będzie uruchamiać określone zdarzenie z wyznaczonym identyfikatorem wysyłki.

Makra mapowania komunikatów

Nazwa/nazwisko opis
ON_OLEVERB Wskazuje niestandardowe zlecenie obsługiwane przez kontrolkę OLE.
ON_STDOLEVERB Zastępuje standardowe mapowanie czasowników kontrolki OLE.

DECLARE_EVENT_MAP

Każda COleControlklasa pochodna w programie może dostarczyć mapę zdarzeń, aby określić zdarzenia, które zostanie wyzwolone przez kontrolkę.

DECLARE_EVENT_MAP()

Uwagi

Użyj makra DECLARE_EVENT_MAP na końcu deklaracji klasy. Następnie w pliku cpp, który definiuje funkcje składowe dla klasy, użyj makra BEGIN_EVENT_MAP, wpisów makra dla każdego ze zdarzeń kontrolki i makra END_EVENT_MAP, aby zadeklarować koniec listy zdarzeń.

Aby uzyskać więcej informacji na temat map zdarzeń, zobacz artykuł Kontrolki ActiveX: Zdarzenia.

Wymagania

Nagłówek afxctl.h

BEGIN_EVENT_MAP

Rozpoczyna definicję mapy zdarzeń.

BEGIN_EVENT_MAP(theClass,  baseClass)

Parametry

theClass
Określa nazwę klasy kontrolnej, której mapa zdarzeń jest taka.

Baseclass
Określa nazwę klasy bazowej klasy theClass.

Uwagi

W pliku implementacji (cpp), który definiuje funkcje składowe dla klasy, uruchom mapę zdarzeń za pomocą makra BEGIN_EVENT_MAP, a następnie dodaj wpisy makra dla każdego z zdarzeń i ukończ mapę zdarzeń za pomocą makra END_EVENT_MAP.

Aby uzyskać więcej informacji na temat map zdarzeń i makra BEGIN_EVENT_MAP, zobacz artykuł Kontrolki ActiveX: Zdarzenia.

Wymagania

Nagłówek afxctl.h

END_EVENT_MAP

Użyj makra END_EVENT_MAP, aby zakończyć definicję mapy zdarzeń.

END_EVENT_MAP()

Wymagania

Nagłówek afxctl.h

EVENT_CUSTOM

Definiuje wpis mapy zdarzeń dla zdarzenia niestandardowego.

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

Parametry

pszName
Nazwa zdarzenia.

pfnFire
Nazwa funkcji wyzwalania zdarzeń.

vtsParams
Rozdzielona spacjami lista co najmniej jednej stałej określającej listę parametrów funkcji.

Uwagi

Parametr vtsParams to rozdzielona spacjami lista wartości ze VTS_ stałych. Co najmniej jedna z tych wartości rozdzielona spacjami (nie przecinkami) określa listę parametrów funkcji. Przykład:

VTS_COLOR VTS_FONT

Określa listę zawierającą 32-bitową liczbę całkowitą reprezentującą wartość koloru RGB, a następnie wskaźnik do IFontDisp interfejsu obiektu czcionki OLE.

VTS_ Stałe i ich znaczenia są następujące:

Symbol Typ parametru
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY CURRENCY
VTS_DATE DATE
VTS_BSTR constChar*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE OBSŁUGI
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

Uwaga

Dodatkowe stałe wariantu zostały zdefiniowane dla wszystkich typów wariantów, z wyjątkiem VTS_FONT i VTS_PICTURE, które zapewniają wskaźnik do stałej danych wariantu. Te stałe są nazywane konwencją VTS_Pconstantname . Na przykład VTS_PCOLOR jest wskaźnikiem do stałej VTS_COLOR.

Wymagania

Nagłówek afxctl.h

EVENT_CUSTOM_ID

Definiuje funkcję wyzwalania zdarzeń dla zdarzenia niestandardowego należącego do identyfikatora wysyłania określonego przez dispid.

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

Parametry

pszName
Nazwa zdarzenia.

Dispid
Identyfikator wysyłki używany przez kontrolkę podczas wyzwalania zdarzenia.

pfnFire
Nazwa funkcji wyzwalania zdarzeń.

vtsParams
Lista parametrów przekazywanych do kontenera sterowania po uruchomieniu zdarzenia.

Uwagi

Argument vtsParams to rozdzielona spacjami lista wartości ze VTS_ stałych. Co najmniej jedna z tych wartości rozdzielona spacjami, a nie przecinkami, określa listę parametrów funkcji. Przykład:

VTS_COLOR VTS_FONT

Określa listę zawierającą 32-bitową liczbę całkowitą reprezentującą wartość koloru RGB, a następnie wskaźnik do IFontDisp interfejsu obiektu czcionki OLE.

Aby uzyskać listę VTS_ stałych, zobacz EVENT_CUSTOM.

Wymagania

Nagłówek afxctl.h

ON_OLEVERB

To makro definiuje wpis mapy komunikatów, który mapuje zlecenie niestandardowe na określoną funkcję składową kontrolki.

ON_OLEVERB(idsVerbName,  memberFxn)

Parametry

idsVerbName
Identyfikator zasobu ciągu nazwy zlecenia.

memberFxn
Funkcja wywoływana przez strukturę podczas wywoływanego czasownika.

Uwagi

Edytor zasobów może służyć do tworzenia niestandardowych nazw czasowników dodawanych do tabeli ciągów.

Prototyp funkcji memberFxn to:

BOOL memberFxn(
   LPMSG    lpMsg,
   HWND     hWndParent,
   LPCRECT  lpRect);

Wartości parametrów lpMsg, hWndParent i lpRect są pobierane z odpowiednich parametrów funkcji składowej IOleObject::DoVerb.

Wymagania

Nagłówek afxole.h

ON_STDOLEVERB

Użyj tego makra, aby zastąpić domyślne zachowanie czasownika standardowego.

ON_STDOLEVERB(iVerb, memberFxn)

Parametry

iVerb
Standardowy indeks czasownika dla przesłonięcia czasownika.

memberFxn
Funkcja wywoływana przez strukturę podczas wywoływanego czasownika.

Uwagi

Standardowy indeks czasowników ma postać OLEIVERB_, a następnie akcję. OLEIVERB_SHOW, OLEIVERB_HIDE i OLEIVERB_UIACTIVATE to przykłady standardowych czasowników.

Zobacz ON_OLEVERB opis prototypu funkcji, który ma być używany jako parametr memberFxn .

Wymagania

Nagłówek afxole.h

Zobacz też

Makra i globalne