Makra kontrolek złożonych
Te makra definiują mapy i wpisy ujścia zdarzeń.
Makro | opis |
---|---|
BEGIN_SINK_MAP | Oznacza początek mapy ujścia zdarzeń dla złożonej kontrolki. |
END_SINK_MAP | Oznacza koniec mapy ujścia zdarzeń dla kontrolki złożonej. |
SINK_ENTRY | Wpis do mapy ujścia zdarzeń. |
SINK_ENTRY_EX | Wpis do mapy ujścia zdarzeń z dodatkowym parametrem. |
SINK_ENTRY_EX_P | (Visual Studio 2017) Podobnie jak SINK_ENTRY_EX z tą różnicą, że wskaźnik ma wskaźnik do identyfikatora iid. |
SINK_ENTRY_INFO | Wpis do mapy ujścia zdarzeń z ręcznie podanymi informacjami o typie do użycia z interfejsem IDispEventSimpleImpl. |
SINK_ENTRY_INFO_P | (Visual Studio 2017) Podobnie jak SINK_ENTRY_INFO z tą różnicą, że wskaźnik ma wskaźnik do identyfikatora iid. |
Wymagania
Nagłówek: atlcom.h
BEGIN_SINK_MAP
Deklaruje początek mapy ujścia zdarzeń dla kontrolki złożonej.
BEGIN_SINK_MAP(_class)
Parametry
_klasa
[in] Określa kontrolkę.
Przykład
BEGIN_SINK_MAP(CMyCompositeCtrl)
//Make sure the Event Handlers have __stdcall calling convention
SINK_ENTRY(IDC_CALENDAR1, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar1)
SINK_ENTRY(IDC_CALENDAR2, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar2)
END_SINK_MAP()
Uwagi
Implementacja ce ATL ujścia zdarzeń ActiveX obsługuje tylko wartości zwracane typu HRESULT lub void z metod obsługi zdarzeń. Każda inna wartość zwracana jest nieobsługiwana, a jego zachowanie jest niezdefiniowane.
END_SINK_MAP
Deklaruje koniec mapy ujścia zdarzeń dla złożonej kontrolki.
END_SINK_MAP()
Przykład
BEGIN_SINK_MAP(CMyCompositeCtrl)
//Make sure the Event Handlers have __stdcall calling convention
SINK_ENTRY(IDC_CALENDAR1, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar1)
SINK_ENTRY(IDC_CALENDAR2, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar2)
END_SINK_MAP()
Uwagi
Implementacja ce ATL ujścia zdarzeń ActiveX obsługuje tylko wartości zwracane typu HRESULT lub void z metod obsługi zdarzeń. Każda inna wartość zwracana jest nieobsługiwana, a jego zachowanie jest niezdefiniowane.
SINK_ENTRY
Deklaruje funkcję obsługi (fn) dla określonego zdarzenia (dispid) kontrolki zidentyfikowanej przez identyfikator.
SINK_ENTRY( id, dispid, fn )
Parametry
id
[in] Identyfikuje kontrolkę.
dispid
[in] Identyfikuje określone zdarzenie.
Fn
[in] Nazwa funkcji obsługi zdarzeń. Ta funkcja musi używać _stdcall
konwencji wywoływania i mieć odpowiedni podpis w stylu dispinterface.
Przykład
BEGIN_SINK_MAP(CMyCompositeCtrl)
//Make sure the Event Handlers have __stdcall calling convention
SINK_ENTRY(IDC_CALENDAR1, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar1)
SINK_ENTRY(IDC_CALENDAR2, DISPID_CLICK, &CMyCompositeCtrl::ClickCalendar2)
END_SINK_MAP()
Uwagi
Implementacja ce ATL ujścia zdarzeń ActiveX obsługuje tylko wartości zwracane typu HRESULT lub void z metod obsługi zdarzeń. Każda inna wartość zwracana jest nieobsługiwana, a jego zachowanie jest niezdefiniowane.
SINK_ENTRY_EX i SINK_ENTRY_EX_P
Deklaruje funkcję obsługi (fn) dla określonego zdarzenia (dispid) interfejsu dispatch (iid) dla kontrolki zidentyfikowanej przez identyfikator.
SINK_ENTRY_EX( id, iid, dispid, fn )
SINK_ENTRY_EX_P( id, piid, dispid, fn ) // (Visual Studio 2017)
Parametry
id
[in] Identyfikuje kontrolkę.
identyfikator iid
[in] Identyfikuje interfejs wysyłania.
piid
[in] Wskaźnik do interfejsu wysyłania.
dispid
[in] Identyfikuje określone zdarzenie.
Fn
[in] Nazwa funkcji obsługi zdarzeń. Ta funkcja musi używać _stdcall
konwencji wywoływania i mieć odpowiedni podpis w stylu dispinterface.
Przykład
BEGIN_SINK_MAP(CMyCompositCtrl2)
//Make sure the Event Handlers have __stdcall calling convention
SINK_ENTRY_EX(IDC_CALENDAR1, __uuidof(DCalendarEvents), DISPID_CLICK,
&CMyCompositCtrl2::ClickCalendar1)
SINK_ENTRY_EX(IDC_CALENDAR2, __uuidof(DCalendarEvents), DISPID_CLICK,
&CMyCompositCtrl2::ClickCalendar2)
END_SINK_MAP()
Uwagi
Implementacja ce ATL ujścia zdarzeń ActiveX obsługuje tylko wartości zwracane typu HRESULT lub void z metod obsługi zdarzeń. Każda inna wartość zwracana jest nieobsługiwana, a jego zachowanie jest niezdefiniowane.
SINK_ENTRY_INFO i SINK_ENTRY_INFO_P
Użyj makra SINK_ENTRY_INFO na mapie ujścia zdarzeń, aby udostępnić informacje wymagane przez usługę IDispEventSimpleImple w celu kierowania zdarzeń do odpowiedniej funkcji obsługi.
SINK_ENTRY_INFO( id, iid, dispid, fn, info )
SINK_ENTRY_INFO_P( id, piid, dispid, fn, info ) // (Visual Studio 2017)
Parametry
id
[in] Niepodpisane liczby całkowite identyfikujące źródło zdarzenia. Ta wartość musi być zgodna z parametrem szablonu nID używanym w powiązanej klasie bazowej IDispEventSimpleImpl .
identyfikator iid
[in] Identyfikator IID identyfikujący interfejs wysyłania.
piid
[in] Wskaźnik do identyfikatora IID identyfikujący interfejs wysyłania.
dispid
[in] DISPID identyfikujący określone zdarzenie.
Fn
[in] Nazwa funkcji obsługi zdarzeń. Ta funkcja musi używać _stdcall
konwencji wywoływania i mieć odpowiedni podpis w stylu dispinterface.
Informacji
[in] Wpisz informacje dotyczące funkcji obsługi zdarzeń. Informacje o tym typie są udostępniane w postaci wskaźnika do _ATL_FUNC_INFO
struktury. CC_CDECL jest jedyną opcją obsługiwaną w systemie Windows CE dla pola _ATL_FUNC_INFO
CALLCONV struktury. Każda inna wartość jest nieobsługiwana, dlatego jej zachowanie jest niezdefiniowane.
Uwagi
Pierwsze cztery parametry makra są takie same jak te dla makra SINK_ENTRY_EX . Końcowy parametr zawiera informacje o typie zdarzenia. Implementacja ce ATL ujścia zdarzeń ActiveX obsługuje tylko wartości zwracane typu HRESULT lub void z metod obsługi zdarzeń. Każda inna wartość zwracana jest nieobsługiwana, a jego zachowanie jest niezdefiniowane.