Reguły obsługi zdarzeń
Istnieją trzy kroki wspólne dla całej obsługi zdarzeń. Należy wykonać następujące kroki:
Zaimplementuj interfejs zdarzenia w obiekcie.
Poinformuj źródło zdarzeń, że obiekt chce odbierać zdarzenia.
Nienadzoruj źródło zdarzeń, gdy obiekt nie musi już odbierać zdarzeń.
Sposób implementacji interfejsu zdarzeń będzie zależeć od jego typu. Interfejs zdarzenia może być wirtualny, podwójny lub dispinterface. Do projektanta źródła zdarzeń należy zdefiniowanie interfejsu; To ty musisz zaimplementować ten interfejs.
Uwaga
Chociaż nie ma żadnych powodów technicznych, że interfejs zdarzenia nie może być podwójny, istnieje wiele dobrych powodów projektowych, aby uniknąć użycia podwójnych. Jest to jednak decyzja podjęta przez projektanta/implementatora źródła zdarzeń. Ponieważ pracujesz z perspektywy zdarzenia sink
, musisz zezwolić na możliwość, że nie masz żadnego wyboru, ale zaimplementować podwójny interfejs zdarzenia. Aby uzyskać więcej informacji na temat podwójnych interfejsów, zobacz Podwójne interfejsy i ATL.
Porady dotyczące źródła zdarzeń można podzielić na trzy kroki:
Wykonaj zapytanie dotyczące obiektu źródłowego I Połączenie ionPointContainer.
Wywołaj metodę I Połączenie ionPointContainer::Find Połączenie ionPoint przekazując identyfikator IID interfejsu zdarzenia, który Cię interesuje. Jeśli to się powiedzie, zwróci interfejs I Połączenie ionPoint w obiekcie punktu połączenia.
Wywołaj metodę I Połączenie ionPoint::Doradzaj przekazanie
IUnknown
ujścia zdarzenia. W przypadku powodzenia zostanie zwróconyDWORD
plik cookie reprezentujący połączenie.
Po pomyślnym zarejestrowaniu zainteresowania odbieraniem zdarzeń metody w interfejsie zdarzeń obiektu będą wywoływane zgodnie ze zdarzeniami wyzwalanym przez obiekt źródłowy. Gdy nie musisz już odbierać zdarzeń, możesz przekazać plik cookie z powrotem do punktu połączenia za pośrednictwem I Połączenie ionPoint::Unadvise. Spowoduje to przerwanie połączenia między źródłem a ujściem.
Należy zachować ostrożność, aby uniknąć cykli referencyjnych podczas obsługi zdarzeń.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla