TN025: Документа, вигляд і створення кадру

Цієї записці описується створення і власності питань для 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 назад вказівник на пункт doc шаблон, який створив документ.

CWinApp ручки за замовчуванням реалізація OnFileOpen , який в свою чергу буде опитувати всіх шаблонів doc. Виконання включає в себе шукає вже відкриті документи і вирішити, що форматування, щоб відкрити нові документи в.

CDocTemplate керує прив'язування призначеного для користувача Інтерфейсу для документів та кадри.

CDocTemplate продовжує підрахунок числа без назви документів.

CDocument

CDocument належить CDocTemplate.

Документи є список зараз відкрито подання (походить від CView) Перегляд документа ( CPtrList).

Документи не створити/знищити думки, але вони прив'язані один до одного, після того, як вони створюються. Коли закрито документа (тобто через файл/закрити), всі вкладені переглядів буде закрито. Під час останнього перегляду документа закриття (тобто, вікна або закрити) документ буде закрито.

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

CFrameWnd

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

CFrameWnd несе відповідальність за створення windows в області клієнт кадру. Зазвичай є один головне вікно, що заповнення кадру, області клієнта.

З вікна MDI-кадр клієнтської області наповнений MDICLIENT контролю, який в свою чергу батька всі рамка вікна MDI дитини. Вікно SDI-кадру або з вікна MDI дитини кадру, клієнтської області зазвичай заповнені з CView-отриманих вікні об'єкта. У випадку з CSplitterWnd, клієнтської області перегляду наповнений CSplitterWnd вікні об'єкта і CView-похідні вікно об'єктів (один за розділення області) створюються як вкладені вікна CSplitterWnd.

Технічні примітки за номером |nbsp; Технічні примітки за категоріями

Index