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


Класс COleLinkingDoc

Базовый класс для документов OLE-контейнера, которые поддерживают связывание со встроенными элементами, которые их содержат.

Синтаксис

class COleLinkingDoc : public COleDocument

Участники

Открытые конструкторы

Имя Описание
COleLinkingDoc::COleLinkingDoc Формирует объект COleLinkingDoc.

Открытые методы

Имя Описание
COleLinkingDoc::Register Регистрирует документ с помощью библиотек DLL системы OLE.
COleLinkingDoc::Revoke Отменяет регистрацию документа.

Защищенные методы

Имя Описание
COleLinkingDoc::OnFindEmbeddedItem Находит указанный внедренный элемент.
COleLinkingDoc::OnGetLinkedItem Находит указанный связанный элемент.

Замечания

Приложение контейнера, поддерживающее связывание со встроенными элементами, называется "контейнером ссылки". Пример приложения OCLIENT является примером контейнера ссылок.

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

Чтобы сделать контейнер ссылкой, наследуйте класс документов вместо COleLinkingDoc COleDocument. Как и в любом другом контейнере OLE, необходимо разработать класс для хранения собственных данных приложения, а также внедренных или связанных элементов. Кроме того, необходимо разработать структуры данных для хранения собственных данных. Если вы определяете производный CDocItemкласс для собственных данных приложения, можно использовать интерфейс, определенный COleDocument для хранения собственных данных, а также данных OLE.

Чтобы разрешить запуск приложения программным способом другим контейнером, объявите COleTemplateServer объект в качестве члена производного класса приложения CWinApp:

class COleContainerApp : public CWinApp
{
protected:
   COleTemplateServer m_server;
   // remainder of class declaration omitted

InitInstance В функции-члене класса-производного CWinAppсоздайте шаблон документа и укажите производный COleLinkingDocкласс в качестве класса документа:

// CMyLinkDoc is derived from COleLinkingDoc
CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_LINKDOCTYPE,
   RUNTIME_CLASS(CMyLinkDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CMyLinkView));
if (!pDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_OLECONTTYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);

COleTemplateServer Подключите объект к шаблонам документов путем вызова функции-члена объекта ConnectTemplate и регистрации всех объектов класса в системе OLE путем вызоваCOleTemplateServer::RegisterAll:

m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
COleTemplateServer::RegisterAll();

Пример определения и InitInstance функции производного класса см. в CWinAppразделе OCLIENT. H и OCLIENT. CPP в примере OCLIENT MFC.

Дополнительные сведения об использовании COleLinkingDocсм. в статьях "Контейнеры : реализация контейнера и контейнеров: дополнительные возможности".

Иерархия наследования

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

Требования

Заголовок: afxole.h

COleLinkingDoc::COleLinkingDoc

COleLinkingDoc Создает объект без начала взаимодействия с библиотеками DLL системы OLE.

COleLinkingDoc();

Замечания

Необходимо вызвать функцию-член, Register чтобы сообщить OLE, что документ открыт.

COleLinkingDoc::OnFindEmbeddedItem

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

virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);

Параметры

lpszItemName
Указатель на имя внедренного элемента OLE, запрошенного.

Возвращаемое значение

Указатель на указанный элемент; ЗНАЧЕНИЕ NULL, если элемент не найден.

Замечания

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

COleLinkingDoc::OnGetLinkedItem

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

virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);

Параметры

lpszItemName
Указатель на имя связанного элемента OLE, запрошенного.

Возвращаемое значение

Указатель на указанный элемент; ЗНАЧЕНИЕ NULL, если элемент не найден.

Замечания

Реализация по умолчанию COleLinkingDoc всегда возвращает значение NULL. Эта функция переопределяется в производном классе COleServerDoc для поиска списка элементов сервера OLE для связанного элемента с указанным именем (сравнение имен учитывает регистр). Переопределите эту функцию, если вы реализовали собственный метод хранения или извлечения связанных элементов сервера.

COleLinkingDoc::Register

Сообщает библиотекам DLL системы OLE, что документ открыт.

BOOL Register(
    COleObjectFactory* pFactory,
    LPCTSTR lpszPathName);

Параметры

pFactory
Указатель на объект фабрики OLE (может иметь значение NULL).

lpszPathName
Указатель на полный путь документа контейнера.

Возвращаемое значение

Ненулевое значение, если документ успешно зарегистрирован; в противном случае — 0.

Замечания

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

Если вы используете COleTemplateServer в приложении, Register вызывается для COleLinkingDocOnNewDocumentвас реализацией , OnOpenDocumentа также OnSaveDocument.

COleLinkingDoc::Revoke

Сообщает библиотекам DLL системы OLE, что документ больше не открыт.

void Revoke();

Замечания

Вызовите эту функцию, чтобы отменить регистрацию документа в библиотеках DLL системы OLE.

Эту функцию следует вызывать при закрытии именованного файла, но обычно не нужно вызывать ее напрямую. Revokeвызывается для вас реализацией COleLinkingDocOnCloseDocument, OnNewDocumentOnOpenDocumentи OnSaveDocument.

См. также

Пример OCLIENT MFC
Класс COleDocument
Диаграмма иерархии
Класс CDocTemplate