В настоящей записке излагаются вопросы, создание и права собственности для WinApps, DocTemplates, документов, кадры и представлений. Вы можете найти большую часть этой информации и других интересных создания и вопросы права собственности в Руководстве Visual C++ программист.
WinApp
Существует один объект CWinApp в системе.
Это статически построено и проинициализированы рамки внутренней реализации WinMain. Должен быть производным от CWinApp делать что-либо полезное (исключение: DLL расширения не должен иметь экземпляр класса CWinApp -инициализация выполняется в DllMain вместо этого).
Один объект CWinApp является владельцем списка шаблонов документов ( CPtrList). Есть один или несколько шаблон документа на приложение. DocTemplates обычно загружаются из файла ресурсов (то есть, массив строк) в CWinApp::InitInstance.
pTemplate = новый CDocTemplate (IDR_MYDOCUMENT,...);
AddDocTemplate(pTemplate)
Один объект CWinApp принадлежат все фрейм окна в приложении. Фрейм главного окна для приложения следует хранить в CWinApp::m_pMainWnd; обычно Настройка m_pMainWnd в InitInstance реализации, если вы не позволите AppWizard сделает это за вас. Для интерфейса одного документа (SDI) это один из CFrameWnd , который служит в качестве главного фрейма окна приложения, а также единственным фрейма окна документа. Для многодокументный интерфейс (MDI) это MDI-кадр (класса CMDIFrameWnd) который служит в качестве главного фрейма окна приложения, содержащий все дочерние CFrameWnds. Каждое дочернее окно класса 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-производный объект window. По CSplitterWndклиентской области считает заполняется объект window CSplitterWnd и CView-объекты производных window (один на панель Сплит) создаются как дочерние окна CSplitterWnd.
Технические примечания по номеру |nbsp; Технические примечания по категориям