Шаблон документа - это класс, который координирует процесс создания следующих классов:
Приложение может использовать любое колдичество шаблонов. Шаблон создается и регистрируется во время инициализации приложения (InitInstance). Соответственно каждый тип документа имеет свой шаблон.
CWinApp::InitInstance { // создаем шаблон и добавляем в приложение }
Для регистрации шаблонов создан специальный абстрактный класс CDocTemplate, от которого порождены два класса
SDI CSingleDocTemplate MDI CMultiDocTemplateКонструктор шаблона имеет следующий вид:
CDocTemplate ( UINT nIDResource, CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass );
Добавляется шаблон в класс приложения функцией AddDocTemplate
CWinApp::AddDocTemplate void AddDocTemplate( CDocTemplate* pTemplate );
У приложения может быть много шаблонов.
Приложение | ________________________ | | | | Шаблон1 Шаблон2 Шаблон3 ....
Если это так, то при запуске приложения появится окно с просьбой указать на основе какого шаблона будет создан документ. Общий алгоритм работы с шаблонами представлен ниже.
File Open File New | | Нет Получение имени Один шаблон -> Спросить какой | Шаблон выбираеться по расширению | | | | | |__________________________________ Создать __|____________________|
Как видите объект приложения создает, хранит и организует доступ к шаблону. Разделение шаблонов на SDI и MDI связанно с тем, что в SDI рамка окна является обычно и рамкой документа.