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


Контейнеры: Расширенные функции

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

  • Приложение, которое является и контейнером, и сервер

  • Ссылка на внедренный объект OLE

Создание контейнера и серверное приложение

Контейнер/серверное приложение приложением, которое действует как контейнер, так и в качестве сервера.Microsoft Word для окон пример.Можно внедрить слово для документов окон в других приложениях, а также элементы в слово для документов windows.Процесс изменения в приложение контейнера быть полным и контейнером и сервером (невозможно создать приложение контейнера или miniserver сочетания) аналогичен процессу для создания полный сервер.

Статья Серверы. Реализация сервер перечислены некоторые задачи, необходимые для реализации серверное приложение.При преобразовании приложение-контейнер к контейнеру или серверное приложение, необходимо выполнить некоторые из этих одних и тех же задач, добавление кода в контейнер.Ниже приведен список важных факторов, которые необходимо учитывать.

  • Код контейнера, созданный мастером приложений уже инициализирует ЯВЛЯЕТСЯ подсистемой.Вам не будет изменять или добавлять любые для этой поддержки.

  • Где бы ни базовый класс для класса документа COleDocument, изменяет базовый класс для COleServerDoc.

  • Переопределите COleClientItem::CanActivate чтобы избежать редактировать элементы в месте, пока сам сервер используется для редактирования на месте.

    Например, в образце ObjectName MFC OLE внедряла элемент, созданный вашими контейнером и серверным приложением.Открыть приложение OCLIENT и правка на месте элемент создал вашими контейнером и серверным приложением.При редактировании элемент приложения, решено, что нужно внедрить элемент, созданный GlobalUnlock ЯВЛЯЕТСЯ образцом MFC.Чтобы сделать это, нельзя использовать встроенную активацию.Необходимо полностью открыть HIERSVR, чтобы активировать этот элемент.Поскольку библиотеки Microsoft Foundation Class не поддерживает эту функцию OLE, позволяет переопределять COleClientItem::CanActivate проверяемого данной ситуации и предотвращает возможную ошибку во время выполнения в приложении.

При создании нового приложения и требуется его функционирования как контейнер/серверное приложение, выберите параметр в диалоговом окне параметры OLE в мастере приложений и этом поддержке будет создан автоматически.Дополнительные сведения см. в статье Общие сведения: Создание контейнера элемента управления ActiveX.Дополнительные сведения об образцах MFC см. в образцах MFC.

Обратите внимание, что нельзя вставить приложение MDI в себя.Приложение, контейнер/сервер невозможно вставить в себя если не будет приложение SDI.

Соединение с внедренным объектам

Ссылки на функции внедренных объектов позволяют пользователю создать документ с ЯВЛЯЕТСЯ ссылкой на внедренный объект внутри контейнерного приложения.Например, создайте документ в текстовом процессоре, содержащий внедренную электронную таблицу.Если приложение указател поддержки к внедренным объектам, оно может вставить ссылку к электронной таблице, содержащихся в документе текстового процессора.Эта функция позволяет приложению использовать данные, содержащиеся в электронной таблице без необходимости знать, где первоначально был получен текстовый процессор.

Связывание с внедренным объектам в приложении

  1. Создайте производный класс от COleLinkingDoc документа вместо COleDocument.

  2. Создайте ЯВЛЯЕТСЯ идентификатор класса (CLSID) для приложения с помощью генератора идентификатор класса, включенного с OLE средствами разработки программного обеспечения.

  3. Зарегистрируйте приложение с OLE.

  4. Создайте объект COleTemplateServer как член класса приложения.

  5. В функции-члене InitInstance типа приложения, выполните следующие действия:

    • Подключите объект COleTemplateServer к шаблонам документов, вызвав функцию-член ConnectTemplate объекта.

    • Вызовите функцию-член COleTemplateServer::RegisterAll для регистрации всех объектов класса с ЯВЛЯЕТСЯ системой.

    • Вызов метода COleTemplateServer::UpdateRegistry.Единственным параметром в UpdateRegistry должен быть OAT_CONTAINER если приложение не запущено с параметром «/Embedded».Эта команда регистрирует приложение в качестве контейнера, который может указатели поддержки к внедренным объектам.

      Если приложение запускается с параметром «/Embedded», то оно не должно отображать свое главное окно, аналогичное серверному приложению.

Пример OLE ObjectName MFC реализует эту функцию.Пример того, как это делается, см. функцию InitInstance в файле OCLIENT.CPP этого примера приложения.

См. также

Основные понятия

Контейнеры

Серверы