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


Класс CDocTemplate

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

Синтаксис

class CDocTemplate : public CCmdTarget

Участники

Защищенные конструкторы

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

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

Имя Описание
CDocTemplate::AddDocument Добавляет документ в шаблон.
CDocTemplate::CloseAllDocuments Закрывает все документы, связанные с этим шаблоном.
CDocTemplate::CreateNewDocument Создает новый документ.
CDocTemplate::CreateNewFrame Создает новое окно фрейма, содержащее документ и представление.
CDocTemplate::CreateOleFrame Создает окно кадров с поддержкой OLE.
CDocTemplate::CreatePreviewFrame Создает дочерний кадр, используемый для расширенной предварительной версии.
CDocTemplate::GetDocString Извлекает строку, связанную с типом документа.
CDocTemplate::GetFirstDocPosition Извлекает положение первого документа, связанного с этим шаблоном.
CDocTemplate::GetNextDoc Извлекает документ и положение следующего.
CDocTemplate::InitialUpdateFrame Инициализирует окно фрейма и при необходимости делает его видимым.
CDocTemplate::LoadTemplate Загружает ресурсы для заданного CDocTemplate или производного класса.
CDocTemplate::MatchDocType Определяет степень достоверности соответствия между типом документа и этим шаблоном.
CDocTemplate::OpenDocumentFile Открывает файл, заданный именем пути.
CDocTemplate::RemoveDocument Удаляет документ из шаблона.
CDocTemplate::SaveAllModified Сохраняет все документы, связанные с этим шаблоном, которые были изменены.
CDocTemplate::SetContainerInfo Определяет ресурсы для контейнеров OLE при редактировании элемента OLE на месте.
CDocTemplate::SetDefaultTitle Отображает заголовок по умолчанию в строке заголовка окна документа.
CDocTemplate::SetPreviewInfo Настройки вне обработчика предварительной версии процесса.
CDocTemplate::SetServerInfo Определяет ресурсы и классы, когда серверный документ внедрен или редактируется на месте.

Замечания

Обычно вы создаете один или несколько шаблонов документов в реализации функции приложения InitInstance . Шаблон документа определяет связи между тремя типами классов:

  • Класс документа, производный от CDocument.

  • Класс представления, который отображает данные из класса документа, указанного выше. Вы можете наследить этот класс от CView, илиCEditViewCScrollViewCFormView. (Вы также можете использовать CEditView напрямую.)

  • Класс окна кадра, содержащий представление. Для одного приложения интерфейса документа (SDI) вы наследуете этот класс.CFrameWnd Для нескольких приложений интерфейса документов (MDI) вы наследуете этот класс.CMDIChildWnd Если вам не нужно настраивать поведение окна фрейма, можно использовать CFrameWnd или CMDIChildWnd напрямую без получения собственного класса.

Приложение имеет один шаблон документа для каждого типа документа, который он поддерживает. Например, если приложение поддерживает как электронные таблицы, так и текстовые документы, приложение имеет два объекта шаблона документа. Каждый шаблон документа отвечает за создание и управление всеми документами своего типа.

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

Шаблон документа содержит идентификатор ресурсов, используемых с типом документа (например, меню, значком или ресурсами таблицы акселератора). Шаблон документа также содержит строки, содержащие дополнительные сведения о типе документа. К ним относятся имя типа документа (например, "Лист") и расширение файла (например, ".xls"). При необходимости он может содержать другие строки, используемые пользовательским интерфейсом приложения, диспетчером файлов Windows и поддержкой связывания объектов и внедрения (OLE).

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

Так как CDocTemplate это абстрактный класс, вы не можете использовать этот класс напрямую. Обычное приложение использует один из двух CDocTemplateпроизводных классов, предоставляемых библиотекой классов Microsoft Foundation: CSingleDocTemplateкоторый реализует SDI и CMultiDocTemplateреализует MDI. Дополнительные сведения об использовании шаблонов документов см. в этих классах.

Если приложению требуется парадигма пользовательского интерфейса, которая существенно отличается от SDI или MDI, вы можете получить собственный класс.CDocTemplate

Дополнительные сведения см CDocTemplate. в разделе "Шаблоны документов" и "Процесс создания документа/представления".

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

CObject

CCmdTarget

CDocTemplate

Требования

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

CDocTemplate::AddDocument

Используйте эту функцию для добавления документа в шаблон.

virtual void AddDocument(CDocument* pDoc);

Параметры

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

Замечания

Производные классы CMultiDocTemplate и CSingleDocTemplate переопределите эту функцию. Если вы наследуете собственный класс шаблона документа, CDocTemplateпроизводный класс должен переопределить эту функцию.

CDocTemplate::CDocTemplate

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

CDocTemplate (
    UINT nIDResource,
    CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass,
    CRuntimeClass* pViewClass);

Параметры

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

Строковый ресурс состоит из семи подстроок, разделенных символом \n ( \n символ необходим в качестве держателя места, если подстрока не включена; однако конечные \n символы не нужны); эти подстроки описывают тип документа. Дополнительные сведения о подстроках см. в разделе GetDocString. Этот строковый ресурс находится в файле ресурсов приложения. Например:

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END

Обратите внимание, что строка начинается с символа \n . Это связано с тем, что первая подстрока не используется для приложений MDI и поэтому не включается. Эту строку можно изменить с помощью редактора строк; Вся строка отображается как одна запись в редакторе строк, а не как семь отдельных записей.

pDocClass
Указывает на CRuntimeClass объект класса документа. Этот класс является производным классом CDocument, который определяется для представления документов.

pFrameClass
Указывает на CRuntimeClass объект класса окна фрейма. Этот класс может быть производным CFrameWndот класса или может быть сам по себе, если требуется CFrameWnd поведение по умолчанию для главного окна фрейма.

pViewClass
Указывает на CRuntimeClass объект класса представления. Этот класс является производным классом CView, который определяется для отображения документов.

Замечания

Используйте эту функцию-член для создания CDocTemplate объекта. Динамически выделяет CDocTemplate объект и передает его CWinApp::AddDocTemplate из InitInstance функции-члена класса приложения.

CDocTemplate::CloseAllDocuments

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

virtual void CloseAllDocuments(BOOL bEndSession);

Параметры

bEndSession
Не используется.

Замечания

Эта функция-член обычно используется в рамках команды "Выход из файла". Реализация этой функции по умолчанию вызывает CDocument::DeleteContents функцию-член для удаления данных документа, а затем закрывает окна кадров для всех представлений, подключенных к документу.

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

CDocTemplate::CreateNewDocument

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

virtual CDocument* CreateNewDocument();

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

Указатель на только что созданный документ или NULL возникает ошибка.

CDocTemplate::CreateNewFrame

Создает новое окно фрейма, содержащее документ и представление.

virtual CFrameWnd* CreateNewFrame(
    CDocument* pDoc,
    CFrameWnd* pOther);

Параметры

pDoc
Документ, к которому должно ссылаться новое окно фрейма. Может иметь значение NULL.

pOther
Окно фрейма, на котором будет основано новое окно фрейма. Может иметь значение NULL.

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

Указатель на только что созданное окно фрейма или NULL возникает ошибка.

Замечания

CreateNewFrame использует объекты, переданные CRuntimeClass конструктору, для создания нового окна фрейма с вложенным представлением и документом. pDoc Если параметр имеет значениеNULL, платформа выводит TRACE сообщение.

Параметр pOther используется для реализации команды Window New. Он предоставляет окно фрейма, на котором моделировается новое окно фрейма. Окно нового фрейма обычно создается невидимым. Вызовите эту функцию, чтобы создать окна фреймов вне стандартной реализации платформы File New and File Open.

CDocTemplate::CreateOleFrame

Создает окно фрейма OLE.

CFrameWnd* CreateOleFrame(
    CWnd* pParentWnd,
    CDocument* pDoc,
    BOOL bCreateView);

Параметры

pParentWnd
Указатель на родительское окно кадра.

pDoc
Указатель на документ, к которому должно ссылаться новое окно фрейма OLE.

bCreateView
Определяет, создается ли представление вместе с кадром.

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

Указатель на окно кадра в случае успешного выполнения; в противном случае NULL.

Замечания

Если bCreateView значение равно нулю, создается пустой кадр.

CDocTemplate::GetDocString

Извлекает строку, связанную с типом документа.

virtual BOOL GetDocString(
    CString& rString,
    enum DocStringIndex index) const;

Параметры

rString
Ссылка на CString объект, содержащий строку при возврате функции.

index
Индекс подстроки, извлекаемой из строки, описывающей тип документа. Этот параметр может принимать одно из следующих значений:

  • CDocTemplate::windowTitle Имя, отображаемое в строке заголовка окна приложения (например, "Microsoft Excel"). Присутствует только в шаблоне документа для приложений SDI.

  • CDocTemplate::docName Корневой каталог для имени документа по умолчанию (например, "Лист"). Этот корневой каталог, а также число, используется для имени нового документа этого типа по умолчанию, когда пользователь выбирает команду "Создать " в меню "Файл " (например, "Лист1" или "Лист2"). Если значение не указано, параметр "Без имени" используется в качестве значения по умолчанию.

  • CDocTemplate::fileNewName Имя этого типа документа. Если приложение поддерживает несколько типов документа, эта строка отображается в диалоговом окне "Создать файл" (например, "Лист"). Если не указано, тип документа недоступен с помощью команды "Создать файл".

  • CDocTemplate::filterName Описание типа документа и фильтра подстановочных знаков, соответствующих документам этого типа. Эта строка отображается в раскрывающемся списке "Файлы типов" в диалоговом окне "Открытие файла" (например, "Листы (*.xls)"). Если это не указано, тип документа недоступен с помощью команды "Открыть файл".

  • CDocTemplate::filterExt Расширение для документов этого типа (например, ".xls"). Если это не указано, тип документа недоступен с помощью команды "Открыть файл".

  • CDocTemplate::regFileTypeId Идентификатор типа документа, хранящегося в базе данных регистрации, поддерживаемой Windows. Эта строка предназначена только для внутреннего использования (например, ExcelWorksheet). Если не указано, тип документа нельзя зарегистрировать в диспетчере файлов Windows.

  • CDocTemplate::regFileTypeName Имя типа документа, хранящегося в базе данных регистрации. Эта строка может отображаться в диалоговых окнах приложений, обращаюющихся к базе данных регистрации (например, "Лист Microsoft Excel").

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

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

Замечания

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

Вызовите эту функцию, только если вы используете собственный класс CDocTemplate.

CDocTemplate::GetFirstDocPosition

Извлекает положение первого документа, связанного с этим шаблоном.

virtual POSITION GetFirstDocPosition() const = 0;

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

POSITION Значение, которое можно использовать для итерации по списку документов, связанных с этим шаблоном документа; или NULL если список пуст.

Замечания

Эта функция используется для получения позиции первого документа в списке документов, связанных с этим шаблоном. POSITION Используйте значение в качестве аргумента для CDocTemplate::GetNextDoc итерации списка документов, связанных с шаблоном.

CSingleDocTemplate и CMultiDocTemplate оба переопределяют эту чистую виртуальную функцию. Любой производный от класса CDocTemplate должен также переопределить эту функцию.

CDocTemplate::GetNextDoc

Извлекает элемент списка, определенный rPos, а затем задает rPos POSITION значение следующей записи в списке.

virtual CDocument* GetNextDoc(POSITION& rPos) const = 0;

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

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

Параметры

rPos
Ссылка на POSITION значение, возвращаемое предыдущим вызовом GetFirstDocPosition или GetNextDoc.

Замечания

Если извлеченный элемент является последним в списке, то для нового значения rPos задано значение NULL.

Вы можете использовать GetNextDoc в цикле итерации пересылки, если установить начальную позицию с вызовом GetFirstDocPosition.

Необходимо убедиться, что значение POSITION представляет допустимую позицию в списке. Если это недопустимо, то утверждается отладочная версия библиотеки классов Microsoft Foundation.

CDocTemplate::InitialUpdateFrame

Инициализирует окно фрейма и при необходимости делает его видимым.

virtual void InitialUpdateFrame(
    CFrameWnd* pFrame,
    CDocument* pDoc,
    BOOL bMakeVisible = TRUE);

Параметры

pFrame
Окно фрейма, которое требует начального обновления.

pDoc
Документ, к которому связан кадр. Может иметь значение NULL.

bMakeVisible
Указывает, должен ли кадр стать видимым и активным.

Замечания

Вызов IntitialUpdateFrame после создания нового кадра с CreateNewFrameпомощью . Вызов этой функции приводит к тому, что представления в этом окне фрейма будут получать их OnInitialUpdate вызовы. Кроме того, если ранее не было активного представления, основное представление окна кадра активируется; основное представление — это представление с дочерним идентификатором AFX_IDW_PANE_FIRST. Наконец, окно кадра отображается, если bMakeVisible ненулевая. Если bMakeVisible значение равно нулю, текущий фокус и видимое состояние окна кадра останется неизменным.

Эта функция не требуется вызывать при использовании реализации платформы "Создать файл" и "Открыть файл".

CDocTemplate::LoadTemplate

Загружает ресурсы для заданного CDocTemplate или производного класса.

virtual void LoadTemplate();

Замечания

Эта функция-член вызывается платформой для загрузки ресурсов для заданного CDocTemplate или производного класса. Обычно он вызывается во время строительства, за исключением случаев, когда шаблон строится глобально. В этом случае вызов LoadTemplate задерживается до CWinApp::AddDocTemplate вызова.

CDocTemplate::MatchDocType

Определяет степень достоверности соответствия между типом документа и этим шаблоном.

virtual Confidence MatchDocType(
    LPCTSTR lpszPathName,
    CDocument*& rpDocMatch);

Параметры

lpszPathName
Имя пути файла, тип которого необходимо определить.

rpDocMatch
Указатель на документ, которому назначен соответствующий документ, если файл, указанный lpszPathName уже открыт.

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

Значение из Confidence перечисления, которое определяется следующим образом:

enum Confidence
    {
    noAttempt,
    maybeAttemptForeign,
    maybeAttemptNative,
    yesAttemptForeign,
    yesAttemptNative,
    yesAlreadyOpen
    };

Замечания

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

Если файл, указанный lpszPathName уже открыт, эта функция возвращает CDocTemplate::yesAlreadyOpen и копирует объект файла CDocument в объект по адресу rpDocMatch.

Если файл не открыт, но расширение соответствует lpszPathName расширению, заданному CDocTemplate::filterExtэтим, эта функция возвращает и задает CDocTemplate::yesAttemptNative rpDocMatch значение NULL. Дополнительные сведения о методе CDocTemplate::filterExt см. в разделе CDocTemplate::GetDocString.

Если ни в чем случае не имеет значения true, функция возвращается CDocTemplate::yesAttemptForeign.

Реализация по умолчанию не возвращает или CDocTemplate::maybeAttemptNativeне возвращаетCDocTemplate::maybeAttemptForeign. Переопределите эту функцию, чтобы реализовать логику сопоставления типов, соответствующую приложению, возможно, используя эти два значения из Confidence перечисления.

CDocTemplate::OpenDocumentFile

Открывает файл, указанный путем.

virtual CDocument* OpenDocumentFile(LPCTSTR lpszPathName) = 0;

virtual CDocument* OpenDocumentFile(
    LPCTSTR lpszPathName,
    BOOL bAddToMRU) = 0;

Параметры

lpszPathName
[in] Указатель на путь к файлу, который содержит открытый документ.

bAddToMRU
[in] TRUE указывает, что документ является одним из самых последних файлов; FALSE указывает, что документ не является одним из последних файлов.

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

Указатель на документ, файл которого называется lpszPathName; NULL в случае неудачного выполнения.

Замечания

Открывает файл, путь к которому указан lpszPathName. Если lpszPathName это NULLтак, создается новый файл, содержащий документ типа, связанного с этим шаблоном.

CDocTemplate::RemoveDocument

Удаляет документ, на который указывает pDoc список документов, связанных с этим шаблоном.

virtual void RemoveDocument(CDocument* pDoc);

Параметры

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

Замечания

Производные классы CMultiDocTemplate и CSingleDocTemplate переопределите эту функцию. Если вы наследуете собственный класс шаблона документа, CDocTemplateпроизводный класс должен переопределить эту функцию.

CDocTemplate::SaveAllModified

Сохраняет все измененные документы.

virtual BOOL SaveAllModified();

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

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

CDocTemplate::SetContainerInfo

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

void SetContainerInfo(UINT nIDOleInPlaceContainer);

Параметры

nIDOleInPlaceContainer
Идентификатор ресурсов, используемых при активации внедренного объекта.

Замечания

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

Меню, связанное с nIDOleInPlaceContainer разделителями, которые позволяют меню активированного элемента на месте объединяться с меню приложения контейнера. Дополнительные сведения о слиянии серверных и контейнерных меню см. в статье "Меню и ресурсы" (OLE).

CDocTemplate::SetDefaultTitle

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

virtual void SetDefaultTitle(CDocument* pDocument) = 0;

Параметры

pDocument
Указатель на документ, заголовок которого должен быть задан.

Замечания

Сведения о заголовке по умолчанию см. в описанииCDocTemplate::docName.CDocTemplate::GetDocString

CDocTemplate::SetServerInfo

Определяет ресурсы и классы, когда серверный документ внедрен или редактируется на месте.

void SetServerInfo(
    UINT nIDOleEmbedding,
    UINT nIDOleInPlaceServer = 0,
    CRuntimeClass* pOleFrameClass = NULL,
    CRuntimeClass* pOleViewClass = NULL);

Параметры

nIDOleEmbedding
Идентификатор ресурсов, используемых при открытии внедренного объекта в отдельном окне.

nIDOleInPlaceServer
Идентификатор ресурсов, используемых при активации внедренного объекта на месте.

pOleFrameClass
Указатель на CRuntimeClass структуру, содержащую сведения о классе для объекта окна кадра, созданного при активации на месте.

pOleViewClass
Указатель на CRuntimeClass структуру, содержащую сведения о классе для объекта представления, созданного при активации на месте.

Замечания

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

Меню, связанное с nIDOleInPlaceServer разделителями, которые позволяют серверу объединяться с меню контейнера. Дополнительные сведения о слиянии серверных и контейнерных меню см. в статье "Меню и ресурсы" (OLE).

CDocTemplate::CreatePreviewFrame

Создает дочерний кадр, используемый для расширенной предварительной версии.

CFrameWnd* CreatePreviewFrame(
    CWnd* pParentWnd,
    CDocument* pDoc);

Параметры

pParentWnd
Указатель на родительское окно (обычно предоставляется оболочкой).

pDoc
Указатель на объект документа, содержимое которого будет предварительно просмотрировано.

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

Допустимый CFrameWnd указатель на объект или NULL, если создание завершается ошибкой.

Замечания

CDocTemplate::SetPreviewInfo

Настраивает обработчик предварительного просмотра процесса.

void SetPreviewInfo(
    UINT nIDPreviewFrame,
    CRuntimeClass* pPreviewFrameClass = NULL,
    CRuntimeClass* pPreviewViewClass = NULL);

Параметры

nIDPreviewFrame
Указывает идентификатор ресурса кадра предварительного просмотра.

pPreviewFrameClass
Указывает указатель на структуру сведений о классе среды выполнения кадра предварительного просмотра.

pPreviewViewClass
Указывает указатель на структуру сведений о классе среды выполнения представления предварительного просмотра.

Замечания

См. также

CCmdTarget Класс
Диаграмма иерархии
CSingleDocTemplate Класс
CMultiDocTemplate Класс
CDocument Класс
CView Класс
CScrollView Класс
CEditView Класс
CFormView Класс
CFrameWnd Класс
CMDIChildWnd Класс