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


Образец ATLDuck: использование точек подключения с библиотекой ATL

Обновлен: Ноябрь 2007

Образец ATLDuck состоит из четырех проектов: atlduck, duck и соответствующих проектов-заглушек — atlduckPS и duckPS. Проект duck создает экземпляр объекта, который реализует интерфейс IDuckInt. Этот интерфейс содержит четыре функции-члена: Flap, Paddle, Quack и Walk.

Второй проект, atlduck, содержит точку подключения для интерфейса IDuckInt (иными словами, он может использовать этот интерфейс, но не реализует его). Будет создан только один экземпляр этого объекта. После установления соединения между двумя приложениями проект atlduck будет вызывать функции в интерфейсе IDuckInt для приемников, которые вызвали метод IConnectionPoint::Advise.

В этом образце также используется код маршалинга (посредством atlduckPS и duckPS), необходимый для подключения интерфейсов в различных процессах.

Образец атрибутов ATLDuck представляет версию данного образца с поддержкой атрибутов.

10tkk23z.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению.

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

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.

Построение и запуск образца

Построение этого образца

  1. Откройте файл решения atlduck.sln.

  2. В меню Построение выберите команду Построить решение. Будут построены все четыре проекта и выполнена необходимая регистрация. Будут созданы следующие файлы:

    • atlduck.exe (EXE-сервер);

    • atlduckPS.dll (библиотека маршалинга для сервера atlduck.exe);

    • duck.exe (EXE-клиент);

    • duckPS.dll (библиотека маршалинга для клиента duck.exe).

Запуск этого образца

  1. Запустите один или несколько экземпляров duck.exe.

    10tkk23z.alert_note(ru-ru,VS.90).gifПримечание.

    Открытие нескольких экземпляров duck.exe наиболее эффективным образом демонстрирует точки подключения.

  2. Появится диалоговое окно. В этом диалоговом окне нажмите кнопку Create DoDuck Object. После нажатия кнопки приложение создаст экземпляр объекта класса ID CLSID_DuckDoer, запускающего atlduck.

  3. Откроется новое диалоговое окно, вызванное atlduck.exe. В этом диалоговом окне расположена кнопка для каждой функции в интерфейсе IDuckInt, а также список подключений к активным приемникам и их файлов cookie. В диалоговых окнах duck можно выбрать команду Advise или Unadvise для точки подключения. В зависимости от этого выбора будет включено или отключено получение уведомлений от источников. Получаемые уведомления будут показываться в поле редактирования состояния. Кроме того, в приложении ATLDuck показано значение файла cookie, переданного точкой подключения во время оповещения подключения.

Классы и ключевые слова

В образце используются следующие классы:

CDialog (MFC), CComObject (ATL), IConnectionPointImpl<CDuckDoer> (ATL)

В этом образце используются следующие ключевые слова:

_ASSERTE; _tcslen; _VERIFY; AddRef; Advise; BEGIN_COM_MAP; BEGIN_CONNECTION_POINT_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; CComCoClass; CComModule::Unlock; CComObjectRootEx; CDialogImpl; CenterWindow; CoInitialize; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; COMMAND_HANDLER; COMMAND_ID_HANDLER; CONNECTION_POINT_ENTRY; CoSuspendClassObjects; CoUninitialize; Create; DECLARE_CLASSFACTORY_SINGLETON; DECLARE_NOT_AGGREGATABLE; DECLARE_REGISTRY_RESOURCEID; DestroyWindow; DispatchMessage; EnableWindow; END_COM_MAP; END_CONNECTION_POINT_MAP; END_MSG_MAP; END_OBJECT_MAP; ExitProcess; FindConnectionPoint; GetCommandLine; GetDC; GetDlgItem; GetMessage; GetTextExtentPoint32; IConnectionPointContainerImpl; IConnectionPointImpl; Init; IsWindowVisible; MESSAGE_HANDLER; MessageBox; OBJECT_ENTRY; OleInitializeCoCreateInstance; OnCancel; OnFlap; OnInitDialog; OnOK; OnPaddle; OnWalk OnQuack; PostThreadMessage; QueryInterface; RecalcListboxExtent; RegisterClassObjects; RegisterServer; reinterpret_cast; ReleaseDC; RevokeClassObjects; SendMessage; SetOwner; SetWindowText; ShowStatus; ShowWindow; Unadvise; UnregisterServer; UNUSED_ALWAYS; UpdateRegistryFromResource; UpdateWindow; USES_CONVERSION

См. также

Другие ресурсы

Образцы ATL