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


Класс COleDocument

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

Синтаксис

class COleDocument : public CDocument

Участники

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

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

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

Имя Описание
COleDocument::AddItem Добавляет элемент в список элементов, поддерживаемых документом.
COleDocument::ApplyPrintDevice Задает целевое устройство печати для всех клиентских элементов в документе.
COleDocument::EnableCompoundFile Приводит к хранению документов с помощью формата файла структурированного хранилища OLE.
COleDocument::GetInPlaceActiveItem Возвращает элемент OLE, который в настоящее время активен на месте.
COleDocument::GetNextClientItem Возвращает следующий клиентский элемент для итерации.
COleDocument::GetNextItem Возвращает следующий элемент документа для итерации.
COleDocument::GetNextServerItem Возвращает следующий элемент сервера для итерации.
COleDocument::GetPrimarySelectedItem Возвращает основной выбранный элемент OLE в документе.
COleDocument::GetStartPosition Возвращает начальную позицию для начала итерации.
COleDocument::HasBlankItems Проверяет наличие пустых элементов в документе.
COleDocument::OnShowViews Вызывается, когда документ становится видимым или невидимым.
COleDocument::RemoveItem Удаляет элемент из списка элементов, поддерживаемых документом.
COleDocument::UpdateModifiedFlag Помечает документ как измененный, если какие-либо из содержащихся элементов OLE были изменены.

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

Имя Описание
COleDocument::OnEditChangeIcon Обрабатывает события в команде меню "Значок изменения".
COleDocument::OnEditConvert Обрабатывает преобразование внедренного или связанного объекта из одного типа в другой.
COleDocument::OnEditLinks Обрабатывает события в команде "Ссылки" в меню "Изменить".
COleDocument::OnFileSendMail Отправляет сообщение электронной почты с присоединенным документом.
COleDocument::OnUpdateEditChangeIcon Вызывается платформой для обновления пользовательского интерфейса команды для параметра меню "Изменить и изменить значок".
COleDocument::OnUpdateEditLinksMenu Вызывается платформой для обновления пользовательского интерфейса команды для параметра меню "Изменить или ссылки".
COleDocument::OnUpdateObjectVerbMenu Вызывается платформой для обновления пользовательского интерфейса команды для параметра меню Edit/ObjectName и подменю команд, доступ к которым получен из Edit/ObjectName.
COleDocument::OnUpdatePasteLinkMenu Вызывается платформой для обновления пользовательского интерфейса команды для параметра "Вставить специальное меню".
COleDocument::OnUpdatePasteMenu Вызывается платформой для обновления пользовательского интерфейса команды для параметра меню "Вставка".

Замечания

COleDocument производный от CDocumentприложения OLE, который позволяет приложениям OLE использовать архитектуру документа и представления, предоставляемую библиотекой классов Microsoft Foundation.

COleDocument обрабатывает документ как коллекцию объектов CDocItem для обработки элементов OLE. Для контейнеров и серверных приложений требуется такая архитектура, так как их документы должны содержать элементы OLE. Классы COleServerItem и COleClientItem, производные отCDocItem, управляют взаимодействием между приложениями и элементами OLE.

Если вы пишете простое приложение контейнера, наследуйте класс документа.COleDocument Если вы пишете приложение контейнера, поддерживающее связывание с внедренными элементами, содержащимися в документах, наследуйте класс документа из COleLinkingDoc. Если вы пишете серверное приложение или сочетание контейнера или сервера, наследуйте класс документов из COleServerDoc. COleLinkingDoc и COleServerDoc являются производными от COleDocumentэтих классов, поэтому эти классы наследуют все службы, доступные в COleDocument и CDocument.

Чтобы использовать COleDocument, наследуйте класс и добавьте функциональные возможности для управления данными, отличными от OLE, а также внедренными или связанными элементами. Если вы определяете CDocItemпроизводные классы для хранения собственных данных приложения, можно использовать реализацию по умолчанию, определенную COleDocument для хранения данных OLE и не OLE. Вы также можете создавать собственные структуры данных для хранения данных, отличных от OLE-элементов. Дополнительные сведения см. в статье "Контейнеры: составные файлы.".

CDocument поддерживает отправку документа по почте, если присутствует поддержка почты (MAPI). COleDocument обновлено OnFileSendMail для правильной обработки составных документов. Дополнительные сведения см. в статьях MAPI и MAPI Support in MFC..

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

CObject

CCmdTarget

CDocument

COleDocument

Требования

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

COleDocument::AddItem

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

virtual void AddItem(CDocItem* pItem);

Параметры

pItem
Указатель на добавляемый элемент документа.

Замечания

Не нужно явно вызывать эту функцию, когда она вызывается конструктором COleClientItem или COleServerItem принимает указатель на документ.

COleDocument::ApplyPrintDevice

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

BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
BOOL ApplyPrintDevice(const PRINTDLG* ppd);

Параметры

ptd
Указатель на DVTARGETDEVICE структуру данных, содержащую сведения о новом целевом устройстве печати. Может иметь значение NULL.

ppd
Указатель на PRINTDLG структуру данных, содержащую сведения о новом целевом устройстве печати. Может иметь значение NULL.

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

Ненулевое значение, если функция была успешной; в противном случае — 0.

Замечания

Эта функция обновляет целевое устройство печати для всех элементов, но не обновляет кэш презентации для этих элементов. Чтобы обновить кэш презентации для элемента, вызовите COleClientItem::UpdateLink.

Аргументы этой функции содержат сведения, которые OLE использует для идентификации целевого устройства. Структура PRINTDLG содержит сведения, которые Windows использует для инициализации общего диалогового окна печати. После закрытия диалогового окна Windows возвращает сведения о выборах пользователя в этой структуре. Элемент m_pd объекта CPrintDialog является структурой PRINTDLG .

Дополнительные сведения см . в структуре PRINTDLG в пакете SDK для Windows.

Дополнительные сведения см . в структуре DVTARGETDEVICE в пакете SDK для Windows.

COleDocument::COleDocument

Формирует объект COleDocument.

COleDocument();

COleDocument::EnableCompoundFile

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

void EnableCompoundFile(BOOL bEnable = TRUE);

Параметры

bEnable
Указывает, включена ли поддержка составных файлов или отключена.

Замечания

Это также называется структурированным хранилищем. Обычно эта функция вызывается из конструктора производного COleDocumentкласса. Дополнительные сведения о составных документах см. в статье "Контейнеры: составные файлы.".

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

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

COleDocument::GetInPlaceActiveItem

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

virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);

Параметры

pWnd
Указатель на окно, отображающее документ контейнера.

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

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

COleDocument::GetNextClientItem

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

COleClientItem* GetNextClientItem(POSITION& pos) const;

Параметры

pos
Ссылка на значение POSITION, заданное предыдущим вызовом GetNextClientItem; начальное значение возвращается GetStartPosition функцией-членом.

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

Указатель на следующий клиентский элемент в документе или NULL, если нет дополнительных клиентских элементов.

Замечания

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

Пример

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleClientItem* pItem;
CString strType;
while ((pItem = pDoc->GetNextClientItem(pos)) != NULL)
{
   // Use pItem
   pItem->GetUserType(USERCLASSTYPE_FULL, strType);
   TRACE(strType);
}

COleDocument::GetNextItem

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

virtual CDocItem* GetNextItem(POSITION& pos) const;

Параметры

pos
Ссылка на значение POSITION, заданное предыдущим вызовом GetNextItem; начальное значение возвращается GetStartPosition функцией-членом.

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

Указатель на элемент документа в указанной позиции.

Замечания

После каждого вызова значение pos присваивается значению POSITION следующего элемента в документе. Если полученный элемент является последним элементом в документе, новое значение pos равно NULL.

Пример

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
CDocItem* pItem;
CString strType;
while (pos != NULL)
{
   pItem = pDoc->GetNextItem(pos);
   // Use pItem
   if (pItem->IsKindOf(RUNTIME_CLASS(COleClientItem)))
   {
      ((COleClientItem*)pItem)->GetUserType(USERCLASSTYPE_FULL, strType);
      TRACE(strType);
   }
}

COleDocument::GetNextServerItem

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

COleServerItem* GetNextServerItem(POSITION& pos) const;

Параметры

pos
Ссылка на значение POSITION, заданное предыдущим вызовом GetNextServerItem; начальное значение возвращается GetStartPosition функцией-членом.

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

Указатель на следующий элемент сервера в документе или NULL, если больше элементов сервера нет.

Замечания

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

Пример

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleServerItem* pItem;
while ((pItem = pDoc->GetNextServerItem(pos)) != NULL)
{
   // Use pItem
}

COleDocument::GetPrimarySelectedItem

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

virtual COleClientItem* GetPrimarySelectedItem(CView* pView);

Параметры

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

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

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

Замечания

Реализация по умолчанию выполняет поиск списка содержащихся элементов OLE для одного выбранного элемента и возвращает указатель на него. Если не выбран элемент или если выбрано несколько элементов, функция возвращает значение NULL. Для работы этой функции необходимо переопределить CView::IsSelected функцию-член в классе представления. Переопределите эту функцию, если у вас есть собственный метод хранения содержащихся элементов OLE.

COleDocument::GetStartPosition

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

virtual POSITION GetStartPosition() const;

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

Значение POSITION, которое можно использовать для начала итерации элементов документа; ЗНАЧЕНИЕ NULL, если в документе нет элементов.

Замечания

Передайте значение, возвращаемое GetNextItemв , GetNextClientItemили GetNextServerItem.

COleDocument::HasBlankItems

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

BOOL HasBlankItems() const;

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

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

Замечания

Пустой элемент — это один прямоугольник, прямоугольник которого пуст.

COleDocument::OnEditChangeIcon

Отображает диалоговое окно "Значок изменения OLE" и изменяет значок, представляющий выбранный в данный момент элемент OLE, на значок, который пользователь выбирает в диалоговом окне.

afx_msg void OnEditChangeIcon();

Замечания

OnEditChangeIcon создает и запускает диалоговое COleChangeIconDialog окно "Значок изменения".

COleDocument::OnEditConvert

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

afx_msg void OnEditConvert();

Замечания

OnEditConvert создает и запускает диалоговое COleConvertDialog окно "Преобразовать".

Пример преобразования — преобразование документа Microsoft Word в документ WordPad.

Отображает диалоговое окно "Изменение и ссылки OLE".

afx_msg void OnEditLinks();

Замечания

OnEditLinks создает и запускает диалоговое COleLinksDialog окно "Ссылки", позволяющее пользователю изменять связанные объекты.

COleDocument::OnFileSendMail

Отправляет сообщение через узел почтовой почты резидента (если таковой) с документом в виде вложения.

afx_msg void OnFileSendMail();

Замечания

OnFileSendMail вызовы OnSaveDocument сериализации (сохранения) неуправляемых и измененных документов во временный файл, который затем отправляется через электронную почту. Если документ не был изменен, временный файл не нужен; Исходный отправляется. OnFileSendMail загружает MAPI32.DLL, если он еще не загружен.

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

Дополнительные сведения см. в разделах MAPI и поддержке MAPI в статьях MFC.

COleDocument::OnShowViews

Платформа вызывает эту функцию после изменения состояния видимости документа.

virtual void OnShowViews(BOOL bVisible);

Параметры

bVisible
Указывает, стал ли документ видимым или невидимым.

Замечания

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

COleDocument::OnUpdateEditChangeIcon

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

afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);

Параметры

pCmdUI
Указатель на CCmdUI структуру, представляющую меню, которое создало команду обновления. Обработчик обновления вызывает Enable функцию-член CCmdUI структуры через pCmdUI для обновления пользовательского интерфейса.

Замечания

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

COleDocument::OnUpdateEditLinksMenu

Вызывается платформой для обновления команды "Ссылки" в меню "Изменить".

afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);

Параметры

pCmdUI
Указатель на CCmdUI структуру, представляющую меню, которое создало команду обновления. Обработчик обновления вызывает Enable функцию-член CCmdUI структуры через pCmdUI для обновления пользовательского интерфейса.

Замечания

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

COleDocument::OnUpdateObjectVerbMenu

Вызывается платформой для обновления команды ObjectName в меню "Изменить" и подменю "Глагол", доступ к которой осуществляется из команды ObjectName, где ObjectName — имя объекта OLE, внедренного в документ.

afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);

Параметры

pCmdUI
Указатель на CCmdUI структуру, представляющую меню, которое создало команду обновления. Обработчик обновления вызывает Enable функцию-член CCmdUI структуры через pCmdUI для обновления пользовательского интерфейса.

Замечания

OnUpdateObjectVerbMenuобновляет пользовательский интерфейс команды ObjectName в зависимости от того, существует ли допустимый объект в документе. Если объект существует, команда ObjectName в меню "Изменить" включена. При выборе этой команды меню отображается подменю "Глагол". Подменю "Команда" содержит все команды команды команды, доступные для объекта, например "Изменить", "Свойства" и т. д. Переопределите эту функцию, чтобы изменить поведение.

COleDocument::OnUpdatePasteLinkMenu

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

afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);

Параметры

pCmdUI
Указатель на CCmdUI структуру, представляющую меню, которое создало команду обновления. Обработчик обновления вызывает Enable функцию-член CCmdUI структуры через pCmdUI для обновления пользовательского интерфейса.

Замечания

Команда "Вставить специальное меню" включена или отключена в зависимости от того, может ли элемент быть вставлен в документ или нет.

COleDocument::OnUpdatePasteMenu

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

afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);

Параметры

pCmdUI
Указатель на CCmdUI структуру, представляющую меню, которое создало команду обновления. Обработчик обновления вызывает Enable функцию-член CCmdUI структуры через pCmdUI для обновления пользовательского интерфейса.

Замечания

Команда меню вставки и кнопка включены или отключены в зависимости от того, может ли элемент быть вставлен в документ или нет.

COleDocument::RemoveItem

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

virtual void RemoveItem(CDocItem* pItem);

Параметры

pItem
Указатель на элемент документа, который нужно удалить.

Замечания

Обычно не требуется явно вызывать эту функцию; он вызывается деструкторами для COleClientItem и COleServerItem.

COleDocument::UpdateModifiedFlag

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

virtual void UpdateModifiedFlag();

Замечания

Это позволяет платформе запрашивать пользователю сохранять документ перед закрытием, даже если собственные данные в документе не были изменены.

См. также

Пример контейнера MFC
Пример MFC MFCBIND
Класс CDocument
Диаграмма иерархии