Добавление точек подключения к объектам
В руководстве ATL показано, как создать элемент управления с поддержкой точек подключения, как добавить события, а затем реализовать точку подключения. ATL реализует точки подключения с классом IConnectionPointImpl .
Чтобы реализовать точку подключения, у вас есть два варианта:
Реализуйте собственный источник исходящего события, добавив точку подключения к элементу управления или объекту.
Повторное использование интерфейса точки подключения, определенного в другой библиотеке типов.
В любом случае мастер реализации точки подключения использует библиотеку типов для выполнения своей работы.
Добавление точки подключения к элементу управления или объекту
Определите dispinterface в блоке библиотеки 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.
Используйте представление классов для добавления методов и свойств в интерфейс событий. Щелкните правой кнопкой мыши класс в представлении классов, выберите пункт "Добавить " в контекстном меню и нажмите кнопку "Добавить точку подключения".
В списке исходных интерфейсов мастера реализации точки подключения выберите интерфейсы проекта. Если вы выберете интерфейс для элемента управления и нажмите кнопку ОК, вы:
Создайте файл заголовка с прокси-классом события, реализующим код, который будет выполнять исходящие вызовы для события.
Добавьте запись на карту точки подключения.
Вы также увидите список всех библиотек типов на компьютере. Для определения точки подключения следует использовать только одну из этих других библиотек типов, если вы хотите реализовать тот же исходящий интерфейс, найденный в другой библиотеке типов.
Повторное использование интерфейса точки подключения, определенного в другой библиотеке типов
В представлении классов щелкните правой кнопкой мыши класс, реализующий макрос BEGIN_COM_MAP , наведите указатель на пункт "Добавить " в контекстном меню и нажмите кнопку "Добавить точку подключения".
В мастере реализации точки подключения выберите библиотеку типов и интерфейс в библиотеке типов и нажмите кнопку "Добавить".
Измените IDL-файл в любой из следующих вариантов:
Скопируйте dispinterface из IDL-файла для объекта, источник событий которого используется.
Используйте инструкцию importlib для этой библиотеки типов.