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