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ń , OnRangeMouseDown
jest 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