Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Samouczek ATL pokazuje, jak utworzyć kontrolkę z obsługą punktów połączenia, jak dodawać zdarzenia, a następnie jak zaimplementować punkt połączenia. 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 pracy.
Dodawanie punktu połączenia do kontrolki lub obiektu
Zdefiniuj dispinterface w bloku biblioteki w pliku
.idl. Jeśli włączyłeś obsługę punktów połączenia podczas tworzenia kontrolki za pomocą Kreatora kontrolek ATL, dispinterface jest już utworzony. Jeśli podczas tworzenia kontrolki nie włączono obsługi punktów połączenia, należy ręcznie dodać element 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.exelubguidgen.exe, aby wygenerować identyfikator GUID.Dodaj interfejs dispinterface jako interfejs
[default,source]w coclass dla obiektu w pliku projektu.idl. Ponownie, jeśli przy tworzeniu kontrolki włączono obsługę punktów połączenia, Kreator kontrolek ATL utworzy wpis[default,source]. Aby ręcznie dodać ten wpis, dodaj wiersz pogrubiony:coclass Buddy { [default] interface IBuddy; [default,source] dispinterface DBuddyEvents; };Zobacz plik
.idlw przykładzie Circ ATL.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 wybierz polecenie Dodaj punkt połączenia.
W polu listy Interfejsy źródłowe w Kreatorze implementowania punktu połączenia wybierz Interfejsy projektu. Jeśli wybierzesz interfejs kontrolki i wybierzesz przycisk OK, możesz:
- 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. Użyj 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.
Ponowne użycie interfejsu punktu połączenia zdefiniowanego w innej bibliotece typów
W widoku klasy kliknij prawym przyciskiem myszy klasę, która implementuje
BEGIN_COM_MAPmakro, wskaż polecenie Dodaj w menu skrótów, a następnie wybierz polecenie Dodaj punkt połączenia.W Kreatorze implementowania punktów połączenia wybierz bibliotekę typów i interfejs w bibliotece typów, a następnie wybierz pozycję Dodaj.
Edytuj plik
.idltak, aby:- Skopiuj interfejs wyświetlania z pliku
.idldla obiektu wykorzystującego źródło zdarzeń. - Użyj instrukcji importlib w tej bibliotece typów.
- Skopiuj interfejs wyświetlania z pliku