Образец DispSink: обработка событий, отправляемых с одноэлементного COM-сервера через интерфейс диспетчеризации
Обновлен: Ноябрь 2007
В образце DispSink показан одноэлементный серверный объект (который может иметь только один экземпляр), обладающий собственным сдвоенным интерфейсом и интерфейсом диспетчеризации, используемом для передачи событий.
Образец атрибутов DispSink представляет версию данного образца с поддержкой атрибутов.
Примечание о безопасности. |
---|
Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению. |
Чтобы получить образцы и инструкции по их установке, выполните следующие действия.
В меню Справка среды Visual Studio выберите пункт Примеры.
Дополнительные сведения см. в разделе Поиск файлов примеров.
Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.
Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.
Построение и запуск образца
Построение и запуск этого образца
Откройте файл решения DispSink.sln.
В меню Построение выберите команду Построить решение.
Откройте несколько экземпляров тестового контейнера элементов ActiveX и в каждый экземпляр вставьте клиентский элемент управления DispCtl. Сведения о доступе к тестовому контейнеру см. в разделе Тестирование свойств и событий при помощи тестового контейнера.
Вызовите метод Connect для всех элементов управления.
Вызовите метод Send для одного из элементов управления. В поле Parameter Type диалогового окна Invoke Methods задайте значение VT_BSTR и затем введите в поле Parameter Value произвольную строку. Нажмите кнопку Invoke. Введенная строка появится в центре каждого подключенного элемента управления.
Вызовите метод Disconnect для всех элементов управления, прежде чем удалять их.
Принцип работы образца
Сервер представляет собой одноэлементный объект, у которого имеется собственный сдвоенный интерфейс, а также интерфейс диспетчера, используемый для инициирования событий. Серверный объект получает данные с помощью метода Send своего сдвоенного интерфейса и передает их во все подключенные компоненты посредством события Transfer в интерфейсе диспетчера.
Клиент представляет собой элемент управления ActiveX, содержащий серверный объект. Этот элемент управления реагирует на событие Transfer, созданное серверным объектом. Он обладает сдвоенным интерфейсом, включающим методы Connect, Send и Disconnect. Если событие Transfer создается с использованием объекта Variant, содержащего строку BSTR, эта строка отображается в центре элемента управления.
Ключевые слова
В этом образце используются следующие ключевые слова:
#import; CComAutoThreadModule; CComSimpleThreadAllocator; CoCreateInstance; DECLARE_CLASSFACTORY_AUTO_THREAD(); FireViewChange