Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В руководстве ATL показано, как создать элемент управления с поддержкой точек подключения, как добавить события, а затем реализовать точку подключения. ATL реализует точки подключения, используя класс IConnectionPointImpl.
Чтобы реализовать точку подключения, у вас есть два варианта:
- Реализуйте собственный источник исходящего события, добавив точку подключения к элементу управления или объекту.
- Повторное использование интерфейса точки подключения, определенного в другой библиотеке типов.
В любом случае мастер реализации точки подключения использует библиотеку типов для выполнения своей работы.
Добавление точки подключения к элементу управления или объекту
Определите диспинтерфейс в блоке библиотеки файла
.idl. Если вы включили поддержку точек подключения при создании элемента управления с помощью мастера управления ATL, то функция dispinterface уже будет создана. Если при создании элемента управления вы не задействовали поддержку точек подключения, вам необходимо вручную добавить dispinterface в файл.idl. Ниже приведен пример dispinterface. Исходящие интерфейсы не требуются для отправки интерфейсов, но для многих языков сценариев, таких как VBScript и JScript, требуется это, поэтому в этом примере используется два дескрипторов:[ uuid(3233E37D-BCC0-4871-B277-48AE6B61224A), helpstring("Buddy Events") ] dispinterface DBuddyEvents { properties: methods: };Используйте служебную программу
uuidgen.exeилиguidgen.exeдля создания GUID.Добавьте dispinterface как интерфейс
[default,source]в coclass для объекта в файле проекта.idl. Снова, если при создании элемента управления была включена поддержка точек подключения, мастер управления ATL создаст запись[default,source]. Чтобы вручную добавить эту запись, добавьте строку полужирным шрифтом:coclass Buddy { [default] interface IBuddy; [default,source] dispinterface DBuddyEvents; };См.
.idlфайл в примере Circ ATL.Используйте представление классов для добавления методов и свойств в интерфейс событий. Щелкните правой кнопкой мыши класс в представлении классов, наведите указатель на пункт "Добавить " в контекстном меню и выберите "Добавить точку подключения".
В списке Исходные интерфейсыМастера реализации точки подключения выберите Интерфейсы проекта. Если вы выберете интерфейс для элемента управления и нажмите кнопку "ОК", вы:
- Создайте файл заголовка с прокси-классом события, реализующим код, который будет выполнять исходящие вызовы для события.
- Добавьте запись на карту точки подключения.
Вы также увидите список всех библиотек типов на компьютере. Используйте только одну из этих других библиотек типов, чтобы определить точку подключения, если вы хотите реализовать тот же исходящий интерфейс, найденный в другой библиотеке типов.
Повторное использование интерфейса точки подключения, определенного в другой библиотеке типов
В Class View щелкните правой кнопкой мыши класс, реализующий
BEGIN_COM_MAPмакрос, наведите указатель на Добавить в контекстном меню и выберите Добавить точку подключения.В мастере реализации точки подключения выберите библиотеку типов и интерфейс в библиотеке типов и нажмите кнопку "Добавить".
Отредактируйте файл
.idlследующим образом:- Скопируйте dispinterface из
.idlфайла для объекта, источник событий которого используется. - Используйте инструкцию importlib для этой библиотеки типов.
- Скопируйте dispinterface из