Dodawanie punktów połączenia do obiektu
Samouczek ATL pokazuje, jak utworzyć kontrolkę z obsługą punktów połączenia, jak dodawać zdarzenia, a następnie jak zaimplementować punkt połączenia. Usługa ATL implementuje punkty połączenia z klasą IConnectionPointImpl .
Aby zaimplementować punkt połączenia, dostępne są dwie opcje:
Zaimplementuj własne wychodzące źródło zdarzeń, dodając punkt połączenia do kontrolki lub obiektu.
Użyj ponownie interfejsu punktu połączenia zdefiniowanego w innej bibliotece typów.
W obu przypadkach Kreator implementowania punktu połączenia używa biblioteki typów do wykonywania swojej pracy.
Aby dodać punkt połączenia do kontrolki lub obiektu
Zdefiniuj dispinterface w bloku biblioteki pliku idl. Jeśli włączono obsługę punktów połączenia podczas tworzenia kontrolki za pomocą Kreatora kontrolek ATL, zostanie już utworzony dispinterface. Jeśli nie włączono obsługi punktów połączenia podczas tworzenia kontrolki, należy ręcznie dodać dispinterface do pliku idl. Poniżej przedstawiono przykład dispinterface. Interfejsy wychodzące nie są wymagane do wysyłania interfejsów, ale wiele języków skryptów, takich jak VBScript i JScript, wymaga tego, więc w tym przykładzie użyto dwóch różnych języków:
[ uuid(3233E37D-BCC0-4871-B277-48AE6B61224A), helpstring("Buddy Events") ] dispinterface DBuddyEvents { properties: methods: };
Użyj narzędzia uuidgen.exe lub guidgen.exe, aby wygenerować identyfikator GUID.
Dodaj dispinterface jako
[default,source]
interfejs w coclass dla obiektu w pliku idl projektu. Ponownie, jeśli włączono obsługę punktów połączenia podczas tworzenia kontrolki, Kreator kontrolek ATL utworzy[default,source
wpis ] . Aby ręcznie dodać ten wpis, dodaj wiersz pogrubiony:coclass Buddy { [default] interface IBuddy; [default,source] dispinterface DBuddyEvents; };
Zobacz plik idl w przykładzie Circ ATL, aby zapoznać się z przykładem.
Użyj widoku klasy, aby dodać metody i właściwości do interfejsu zdarzenia. Kliknij prawym przyciskiem myszy klasę w widoku klasy, wskaż polecenie Dodaj w menu skrótów, a następnie kliknij polecenie Dodaj punkt połączenia.
W polu listy Interfejsy źródłowe Kreatora implementowania punktu połączenia wybierz pozycję Interfejsy projektu. Jeśli wybierzesz interfejs kontrolki i naciśniesz przycisk OK, wykonasz:
Wygeneruj plik nagłówka z klasą serwera proxy zdarzeń, która implementuje kod, który będzie wykonywać wychodzące wywołania zdarzenia.
Dodaj wpis do mapy punktów połączenia.
Zostanie również wyświetlona lista wszystkich bibliotek typów na komputerze. Należy użyć tylko jednej z tych innych bibliotek typów, aby zdefiniować punkt połączenia, jeśli chcesz zaimplementować dokładnie ten sam interfejs wychodzący znaleziony w innej bibliotece typów.
Aby ponownie użyć interfejsu punktu połączenia zdefiniowanego w innej bibliotece typów
W widoku klasy kliknij prawym przyciskiem myszy klasę, która implementuje makro BEGIN_COM_MAP , wskaż polecenie Dodaj w menu skrótów, a następnie kliknij polecenie Dodaj punkt połączenia.
W Kreatorze implementowania punktu połączenia wybierz bibliotekę typów i interfejs w bibliotece typów, a następnie kliknij przycisk Dodaj.
Zmodyfikuj plik idl na jeden z następujących:
Skopiuj plik dispinterface z pliku idl dla obiektu, którego źródło zdarzeń jest używane.
Użyj instrukcji importlib w tej bibliotece typów.