Udostępnij za pośrednictwem


Mapy wychwytywania zdarzeń

Gdy osadzona kontrolka OLE uruchamia zdarzenie, kontener kontrolki odbiera zdarzenie przy użyciu mechanizmu nazywanego "mapą ujścia zdarzeń" dostarczaną przez MFC. Ta mapa ujścia zdarzeń wyznacza funkcje obsługi dla każdego określonego zdarzenia, a także parametry tych zdarzeń. Aby uzyskać więcej informacji na temat map ujścia zdarzeń, zobacz artykuł Kontenery kontrolek ActiveX.

Mapy wychwytywania zdarzeń

Nazwa/nazwisko opis
BEGIN_EVENTSINK_MAP Uruchamia definicję mapy ujścia zdarzeń.
DECLARE_EVENTSINK_MAP Deklaruje mapę ujścia zdarzeń.
END_EVENTSINK_MAP Kończy definicję mapy ujścia zdarzeń.
ON_EVENT Definiuje procedurę obsługi zdarzeń dla określonego zdarzenia.
ON_EVENT_RANGE Definiuje procedurę obsługi zdarzeń dla określonego zdarzenia wyzwalanego z zestawu kontrolek OLE.
ON_EVENT_REFLECT Odbiera zdarzenia wyzwalane przez kontrolkę przed ich obsługą przez kontener kontrolki.
ON_PROPNOTIFY Definiuje procedurę obsługi powiadomień o właściwościach z kontrolki OLE.
ON_PROPNOTIFY_RANGE Definiuje procedurę obsługi obsługi powiadomień o właściwościach z zestawu kontrolek OLE.
ON_PROPNOTIFY_REFLECT Odbiera powiadomienia o właściwości wysyłane przez kontrolkę przed ich obsługą przez kontener kontrolki.

BEGIN_EVENTSINK_MAP

Rozpoczyna definicję mapy ujścia zdarzeń.

BEGIN_EVENTSINK_MAP(theClass, baseClass)

Parametry

theClass
Określa nazwę klasy sterującej, której mapa ujścia 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ę ujścia zdarzeń przy użyciu makra BEGIN_EVENTSINK_MAP, a następnie dodaj wpisy makra dla każdego zdarzenia, które ma zostać powiadomione, i ukończ mapę ujścia zdarzeń przy użyciu makra END_EVENTSINK_MAP.

Aby uzyskać więcej informacji na temat map ujścia zdarzeń i kontenerów kontrolek OLE, zobacz artykuł Kontenery kontrolek ActiveX.

Wymagania

Nagłówek afxdisp.h

DECLARE_EVENTSINK_MAP

Kontener OLE może dostarczyć mapę ujścia zdarzeń w celu określenia zdarzeń, do których zostanie powiadomiony kontener.

DECLARE_EVENTSINK_MAP()

Uwagi

Użyj makra DECLARE_EVENTSINK_MAP na końcu deklaracji klasy. Następnie w pliku . Plik CPP, który definiuje funkcje składowe dla klasy, użyj makra BEGIN_EVENTSINK_MAP, wpisów makra dla każdego z zdarzeń, które mają być powiadamiane, oraz makra END_EVENTSINK_MAP w celu zadeklarowania końca listy ujścia zdarzeń.

Aby uzyskać więcej informacji na temat map ujścia zdarzeń, zobacz artykuł Kontenery kontrolek ActiveX.

Wymagania

Nagłówek afxwin.h

END_EVENTSINK_MAP

Kończy definicję mapy ujścia zdarzeń.

END_EVENTSINK_MAP()

Wymagania

Nagłówek afxdisp.h

ON_EVENT

Użyj makra ON_EVENT, aby zdefiniować funkcję obsługi zdarzeń dla zdarzenia wyzwalanego przez kontrolkę OLE.

ON_EVENT(theClass, id, dispid, pfnHandler,  vtsParams)

Parametry

theClass
Klasa, do której należy ta mapa ujścia zdarzeń.

id
Identyfikator kontrolki OLE.

dispid
Identyfikator wysyłki zdarzenia wyzwolonego przez kontrolkę.

pfnHandler
Wskaźnik do funkcji składowej, która obsługuje zdarzenie. Ta funkcja powinna mieć typ zwracany boOL i typy parametrów, które są zgodne z parametrami zdarzenia (zobacz vtsParams). Funkcja powinna zwrócić wartość TRUE, aby wskazać, że zdarzenie zostało obsłużone; w przeciwnym razie FAŁSZ.

vtsParams
Sekwencja stałych VTS_ , która określa typy parametrów zdarzenia. Są to te same stałe, które są używane w pozycjach mapy wysyłania, takich jak DISP_FUNCTION.

Uwagi

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

VTS_I2 VTS_BOOL

określa listę zawierającą krótką liczbę całkowitą, po której następuje wartość LOGICZNA.

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

Wymagania

Nagłówek afxdisp.h

ON_EVENT_RANGE

Użyj makra ON_EVENT_RANGE, aby zdefiniować funkcję obsługi zdarzeń dla zdarzenia wyzwalanego przez dowolną kontrolkę OLE o identyfikatorze w ciągłym zakresie identyfikatorów.

ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler,  vtsParams)

Parametry

theClass
Klasa, do której należy ta mapa ujścia zdarzeń.

idFirst
Identyfikator kontrolki pierwszego formantu OLE w zakresie.

idLast
Identyfikator kontrolki ostatniego formantu OLE w zakresie.

dispid
Identyfikator wysyłki zdarzenia wyzwolonego przez kontrolkę.

pfnHandler
Wskaźnik do funkcji składowej, która obsługuje zdarzenie. Ta funkcja powinna mieć typ zwracany boOL, pierwszy parametr typu UINT (dla identyfikatora kontrolki) i dodatkowe typy parametrów, które są zgodne z parametrami zdarzenia (zobacz vtsParams). Funkcja powinna zwrócić wartość TRUE, aby wskazać, że zdarzenie zostało obsłużone; w przeciwnym razie FAŁSZ.

vtsParams
Sekwencja stałych VTS_ , która określa typy parametrów zdarzenia. Pierwsza stała powinna być typu VTS_I4 dla identyfikatora kontrolki. Są to te same stałe, które są używane w pozycjach mapy wysyłania, takich jak DISP_FUNCTION.

Uwagi

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

VTS_I2 VTS_BOOL

określa listę zawierającą krótką liczbę całkowitą, po której następuje wartość LOGICZNA.

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

Przykład

W poniższym przykładzie pokazano procedurę obsługi zdarzeń dla zdarzenia MouseDown zaimplementowaną dla trzech kontrolek (IDC_MYCTRL1 za pośrednictwem IDC_MYCTRL3). Funkcja obsługi zdarzeń , OnRangeMouseDownjest zadeklarowana w pliku nagłówkowym klasy dialog ( CMyDlg) jako:

BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
   long x, long y);

Poniższy kod jest zdefiniowany w pliku implementacji klasy okna dialogowego.

BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
   ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
      VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

Wymagania

Nagłówek afxdisp.h

ON_EVENT_REFLECT

Makro ON_EVENT_REFLECT, gdy jest używane w mapie ujścia zdarzeń klasy otoki kontrolki OLE, odbiera zdarzenia wyzwalane przez kontrolkę przed ich obsługą przez kontener kontrolki.

ON_EVENT_REFLECT(theClass,  dispid, pfnHandler,  vtsParams)

Parametry

theClass
Klasa, do której należy ta mapa ujścia zdarzeń.

dispid
Identyfikator wysyłki zdarzenia wyzwolonego przez kontrolkę.

pfnHandler
Wskaźnik do funkcji składowej, która obsługuje zdarzenie. Ta funkcja powinna mieć typ zwracany i typy parametrów BOOL, które są zgodne z parametrami zdarzenia (zobacz vtsParams). Funkcja powinna zwrócić wartość TRUE, aby wskazać, że zdarzenie zostało obsłużone; w przeciwnym razie FAŁSZ.

vtsParams
Sekwencja stałych VTS_ , która określa typy parametrów zdarzenia. Są to te same stałe, które są używane w pozycjach mapy wysyłania, takich jak DISP_FUNCTION.

Uwagi

Argument vtsParams to rozdzielona spacjami lista wartości z VTS_ stałych.

Co najmniej jedna z tych wartości rozdzielona spacjami (nie przecinkami) określa listę parametrów funkcji. Na przykład:

VTS_I2 VTS_BOOL

określa listę zawierającą krótką liczbę całkowitą, po której następuje wartość LOGICZNA.

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

Wymagania

Nagłówek afxdisp.h

ON_PROPNOTIFY

Użyj makra ON_PROPNOTIFY, aby zdefiniować wpis mapy ujścia zdarzeń do obsługi powiadomień o właściwościach z kontrolki OLE.

ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)

Parametry

theClass
Klasa, do której należy ta mapa ujścia zdarzeń.

id
Identyfikator kontrolki OLE.

dispid
Identyfikator wysyłki właściwości zaangażowanej w powiadomienie.

pfnRequest
Wskaźnik do funkcji składowej, która obsługuje OnRequestEdit powiadomienie dla tej właściwości. Ta funkcja powinna mieć typ zwracany boOL i parametr BOOL* . Ta funkcja powinna ustawić parametr na WARTOŚĆ TRUE, aby zezwolić właściwości na zmianę, a wartość FALSE na nie zezwala. Funkcja powinna zwrócić wartość TRUE, aby wskazać, że powiadomienie zostało obsłużone; w przeciwnym razie FAŁSZ.

pfnChanged
Wskaźnik do funkcji składowej, która obsługuje OnChanged powiadomienie dla tej właściwości. Funkcja powinna mieć typ zwracany boOL i parametr UINT. Funkcja powinna zwrócić wartość TRUE, aby wskazać, że powiadomienie zostało obsłużone; w przeciwnym razie FAŁSZ.

Uwagi

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

VTS_I2 VTS_BOOL

określa listę zawierającą krótką liczbę całkowitą, po której następuje wartość LOGICZNA.

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

ON_PROPNOTIFY_RANGE

Użyj makra ON_PROPNOTIFY_RANGE, aby zdefiniować wpis mapy ujścia zdarzeń do obsługi powiadomień o właściwościach z dowolnej kontrolki OLE o identyfikatorze w ciągłym zakresie identyfikatorów.

ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)

Parametry

theClass
Klasa, do której należy ta mapa ujścia zdarzeń.

idFirst
Identyfikator kontrolki pierwszego formantu OLE w zakresie.

idLast
Identyfikator kontrolki ostatniego formantu OLE w zakresie.

dispid
Identyfikator wysyłki właściwości zaangażowanej w powiadomienie.

pfnRequest
Wskaźnik do funkcji składowej, która obsługuje OnRequestEdit powiadomienie dla tej właściwości. Ta funkcja powinna mieć zwracany BOOL typ i UINT BOOL* parametry. Funkcja powinna ustawić parametr na WARTOŚĆ TRUE, aby zezwolić właściwości na zmianę, a wartość FALSE na nie zezwala. Funkcja powinna zwrócić wartość TRUE, aby wskazać, że powiadomienie zostało obsłużone; w przeciwnym razie FAŁSZ.

pfnChanged
Wskaźnik do funkcji składowej, która obsługuje OnChanged powiadomienie dla tej właściwości. Funkcja powinna mieć typ zwracany BOOL UINT i parametr. Funkcja powinna zwrócić wartość TRUE, aby wskazać, że powiadomienie zostało obsłużone; w przeciwnym razie FAŁSZ.

Wymagania

Nagłówek afxdisp.h

ON_PROPNOTIFY_REFLECT

Makro ON_PROPNOTIFY_REFLECT, gdy jest używane w mapie ujścia zdarzeń klasy otoki kontrolki OLE, odbiera powiadomienia właściwości wysyłane przez kontrolkę przed ich obsługą przez kontener kontrolki.

ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)

Parametry

theClass
Klasa, do której należy ta mapa ujścia zdarzeń.

dispid
Identyfikator wysyłki właściwości zaangażowanej w powiadomienie.

pfnRequest
Wskaźnik do funkcji składowej, która obsługuje OnRequestEdit powiadomienie dla tej właściwości. Ta funkcja powinna mieć typ zwracany boOL i parametr BOOL* . Ta funkcja powinna ustawić parametr na WARTOŚĆ TRUE, aby zezwolić właściwości na zmianę, a wartość FALSE na nie zezwala. Funkcja powinna zwrócić wartość TRUE, aby wskazać, że powiadomienie zostało obsłużone; w przeciwnym razie FAŁSZ.

pfnChanged
Wskaźnik do funkcji składowej, która obsługuje OnChanged powiadomienie dla tej właściwości. Funkcja powinna mieć zwracany typ BOOL i brak parametrów. Funkcja powinna zwrócić wartość TRUE, aby wskazać, że powiadomienie zostało obsłużone; w przeciwnym razie FAŁSZ.

Wymagania

Nagłówek afxdisp.h

Zobacz też

Makra i globalne