TN025: Документ, внешний вид и создание фрейма

ПримечаниеПримечание

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

Эта заметка описывает проблемы владения для создания и WinApps, DocTemplates, Документов, кадров и представлений.

WinApp

Один объект CWinApp в системе.

Оно статически создан и инициализирован пределами внутренней реализации WinMain.Необходимо наследовать CWinApp чтобы сделать все полезные (исключение: библиотеки DLL расширения не должны иметь экземпляр CWinApp — инициализация выполняется в DllMain вместо).

Один объект CWinApp содержит список шаблонов документов ( CPtrList).Один или несколько шаблон документа в приложение.DocTemplates обычно загружается из файла ресурсов (то есть строкового массива) в CWinApp::InitInstance.

pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);
AddDocTemplate(pTemplate);

Один объект CWinApp имеет все окна фрейма в приложении.Окно главного фрейма приложения должны храниться в CWinApp::m_pMainWnd; обычно устанавливается m_pMainWnd в реализации InitInstance если AppWizard не позволяют внести его автоматически.Одинарного для интерфейса (SDI) это одно CFrameWnd, которое служит окно фрейма главного приложения, а также единственная окно фрейма документа.Для интерфейса MDI это Интерфейс MDI-Кадр (класс CMDIFrameWnd), который служит окно фрейма главного приложения, содержащее полностью дочерний элемент CFrameWnd.Каждое дочернее окно создание класса, производного от CMDIChildWnd ( CFrameWnd) и служит одно из потенциально много окон фрейма документа.

DocTemplates

CDocTemplate создатель и диспетчер документов.Он содержит документы, он создается.Если приложение использует основанный ресурсом описанных ниже подхода, он не будет наследовать CDocTemplate.

Для приложений SDI класс CSingleDocTemplate отслеживает одного открытого документа.Для приложений MDI, класс CMultiDocTemplate содержится список ( CPtrList) в настоящий момент открытых документов, созданных с использованием данного шаблона.CDocTemplate::AddDocument и CDocTemplate::RemoveDocument предоставляют виртуальных функций-членов, чтобы добавить или удалить документ из шаблона.CDocTemplate друг CDocument поэтому можно установить защищенный указатель обратно CDocument::m_pDocTemplate для указания обратно в шаблон документа, который создал документ.

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

CDocTemplate управляет пользовательский интерфейс для привязки документов и кадров.

CDocTemplate содержит счетчик число неименованных документов.

CDocument

CDocument Принадлежит CDocTemplate.

Документы имеют список открытых представлений ( CView), просмотр унаследованных из документа ( CPtrList).

Не создают Документы/разрушают представления, но они вложенные друг к другу после их создания.Если будет закрыт документ (то есть с помощью файла и завершение записи), все вложенные представления будут закрыть.Последнего представление в документе будет закрыто (то есть окно/закрыть документ будет закрыт).

CDocument::AddView, интерфейс RemoveView используется для ведения списка представления.CDocument друг CView поэтому можно установить указатель обратно CView::m_pDocument.

CFrameWnd

CFrameWnd (также известное как фрейм) играет ту же роль, как в MFC 1.0, но теперь класс CFrameWnd предназначено для использования во многих случаях без наследования новый класс.Производные классы CMDIFrameWnd и CMDIChildWnd также увеличили так много стандартных команд, уже реализованы.

CFrameWnd отвечает за создание фрейма в клиентской области окна.Обычно одно главное окно заливка клиентскую область кадра.

Интерфейс для окна MDI-Кадра, клиентская область заполняется элементом управления MDICLIENT, которое, в свою очередь, является родительским для всех окон кадра Интерфейс MDI-Дочернего Элемента.Интерфейс для окна SDI-Кадра или фрейма окна Интерфейс MDI-Дочернего Элемента, клиентская область обычно заполняется CView- производным объектом окна.В случае CSplitterWnd, клиентская область представления заполняется объектом окна CSplitterWnd и CView объекты, унаследованные от окна (одна в области разбиения) создаются как дочерние окна CSplitterWnd.

См. также

Другие ресурсы

Технические замечания по номеру

Технические замечания по категориям