Урок №3 - Исследование структуры приложения MFC
Исследование объекта-приложения
Как видим, AppWizard создал для проекта HW 5 классов. Взгляните на класс CHWApp. Этот класс порожден от CWinApp и представляет само приложение. Класс CHWApp объявляется в HW.h. Этот файл можно открыть двойным щелчком на классе CHWApp во вкладке ClassView или на имени файла во вкладке FileView. В этом объявлении можно увидеть 3 функции-члена: конструктор, перекрытую виртуальную функцию InitInstance и CAppAbout.
В HW.cpp объявляется глобальный объект типа CHWApp с именем theApp. Когда начнется выполнение, этот объект будет сконструирован (т.е., будет вызван его конструктор).
Функции InitApplication и InitInstance соответствуют одноразовой инициализации определенного экземпляра. Эти функции вызываются перед входом в цикл сообщений. Взгляните на HW.cpp - файл реализации класса CHWApp (чтобы открыть этот файл из ClassView, необходимо развернуть класс CHWApp и дважды щелкнуть на одной из его функций).
В структуре создана только перекрытая версия InitInstance, но не InitApplication. Поскольку приложения Win32 запускаются в отдельных адресных пространствах, инициализации приложения (в противоположность инициализациям экземпляра) применяются редко (так как они в любом случае влияют на текущий экземпляр).
В InitInstance проводится несколько инициализаций. Эти шаги инициализации отражают варианты выбора при создании приложения с помощью мастера AppWizard. Например, выбрано трехмерное представление по умолчанию в приложении HW; соответственно, трехмерное представление включается в InitInstance.
Возможно, самым важным инициализационным шагом является создание шаблона документа. Объект типа CSingleDocTemplate (так как выбрано приложение SDI) создается и добавляется к шаблонам документов приложения с помощью функции AddDocTemplate. Информация, которая хранится в шаблонах документов, используется при выборе пользователем команды New из меню File. Реализация этой команды по умолчанию находится в функции CWinApp::OnFileNew. Эта функция использует информацию шаблона для определения, какие объекты необходимо создать для представления нового документа и его просмотра.