Прочитать на английском

Поделиться через


Добавление точек подключения к объектам

В руководстве ATL показано, как создать элемент управления с поддержкой точек подключения, как добавить события, а затем реализовать точку подключения. ATL реализует точки подключения, используя класс IConnectionPointImpl.

Чтобы реализовать точку подключения, у вас есть два варианта:

  • Реализуйте собственный источник исходящего события, добавив точку подключения к элементу управления или объекту.
  • Повторное использование интерфейса точки подключения, определенного в другой библиотеке типов.

В любом случае мастер реализации точки подключения использует библиотеку типов для выполнения своей работы.

Добавление точки подключения к элементу управления или объекту

  1. Определите диспинтерфейс в блоке библиотеки файла .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.

  2. Добавьте dispinterface как интерфейс [default,source] в coclass для объекта в файле проекта .idl. Снова, если при создании элемента управления была включена поддержка точек подключения, мастер управления ATL создаст запись [default,source]. Чтобы вручную добавить эту запись, добавьте строку полужирным шрифтом:

    coclass Buddy
    {
       [default] interface IBuddy;
       [default,source] dispinterface DBuddyEvents;
    };
    

    См. .idl файл в примере Circ ATL.

  3. Используйте представление классов для добавления методов и свойств в интерфейс событий. Щелкните правой кнопкой мыши класс в представлении классов, наведите указатель на пункт "Добавить " в контекстном меню и выберите "Добавить точку подключения".

  4. В списке Исходные интерфейсыМастера реализации точки подключения выберите Интерфейсы проекта. Если вы выберете интерфейс для элемента управления и нажмите кнопку "ОК", вы:

    • Создайте файл заголовка с прокси-классом события, реализующим код, который будет выполнять исходящие вызовы для события.
    • Добавьте запись на карту точки подключения.

    Вы также увидите список всех библиотек типов на компьютере. Используйте только одну из этих других библиотек типов, чтобы определить точку подключения, если вы хотите реализовать тот же исходящий интерфейс, найденный в другой библиотеке типов.

Повторное использование интерфейса точки подключения, определенного в другой библиотеке типов

  1. В Class View щелкните правой кнопкой мыши класс, реализующий BEGIN_COM_MAP макрос, наведите указатель на Добавить в контекстном меню и выберите Добавить точку подключения.

  2. В мастере реализации точки подключения выберите библиотеку типов и интерфейс в библиотеке типов и нажмите кнопку "Добавить".

  3. Отредактируйте файл .idl следующим образом:

    • Скопируйте dispinterface из .idl файла для объекта, источник событий которого используется.
    • Используйте инструкцию importlib для этой библиотеки типов.

См. также

Точка соединения


Дополнительные ресурсы

Обучение

Схема обучения

Реализация делегатов и событий - Training

Узнайте, как реализовать позднюю привязку с помощью делегатов, как уведомлять другие классы или объекты, когда происходит что-то интересное с помощью событий, а также управлять издателями событий и подписчиками в приложении C#.

События

MCP DevDays

26 июл., 02 - 26 июл., 02

Ускорение производительности, создание будущего

Register Today