Класс 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..
Иерархия наследования
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.
COleDocument::OnEditLinks
Отображает диалоговое окно "Изменение и ссылки 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
Диаграмма иерархии