AppWizard формирует файлы и классы в зависимости от типа формируемого приложения. Конечно, включение поддержки баз данных и составных документов влияет на формируемые файлы. Мы рассмотрим простые случаи.
При генерации приложения данного типа формируются следующие классы в виде заголовочного файла *.H и файла реализации *.CPP. Будет создано 5 классов.
* - имя проекта
CAboutDlg - класс диалога о программе (About)
C*SDIApp - класс приложения ( включает порожденый класс от CWinApp внутри которого WinMain)
C*SDIDoc - класс документаC*SDIView - класс просмотра
CMainFrame - класс рамки окна
Обратите внимание, что различия очень маленькие SDI меняется на MDI. Кроме того различия очень маленькие есть в коде. Например, для формирования шаблона в SDI используется CSingleDocTemplate, а в MDI - MultiDocTemplate.
* - имя проекта
CAboutDlg - класс диалога о программе (About)
C*MDIApp - класс приложения ( включает порожденый класс от CWinApp внутри которого WinMain)
C*MDIDoc - класс документаC*MDIView - класс просмотра
CMainFrame - класс рамки окна
Формируется 3 класса.
* - имя проекта
CAboutDlg - класс диалога о программе (About)
C*DialogApp - класс приложения ( включает порожденый класс от CWinApp внутри которого WinMain)
C*DialogDlg - класс главного диалогового окна.
Приложения созданные AppWizard уже умеют работать с командной строкой. Это реализуется функцией ProcessShellCommand. Ниже перечисляются поддерживаемые параметры.
нет параметров - запускает приложения и открывает пустой файл
имя файла - запускает и открывает данный файл
/p имя файла - запускает и печатает файл на принтере по умолчанию
/pt имя файла Принтер Драйвер Порт - запускает и печатает на специфичном принтере
/dde - запускает и ждет команд DDE
/Automation - запускает в качестве сервера OLE
/Embedding - запускает в режиме внедренного объекта OLE
Как видите автоматически у Вас формируется большое количество возможностей, например, перетащить файл на принтер и бросить, если зарегистрировано расширение и многое другое.
В начале кода Вы можете увидеть, что-то типа -
#if !defined(AFX_CHILDFRM_H__58CE2B44_BDCB_11D3_A392_000001260696__INCLUDED_)
#define AFX_CHILDFRM_H__58CE2B44_BDCB_11D3_A392_000001260696__INCLUDED_
В этой надписи нет нечего страшного, это аналог -
#if !defined(My_H)
#define My_H
И создано всё это для того, чтобы исключить повторные включения в такой большой код это просто для гарантии, тем более что Вам это самим не вносить. В коде Вы можете увидеть конструкции типа.
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CChildFrame)
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL
Не меняйте нечего внутри AFX_*, так как эту конструкцию использует ClassWizard для добавления и удаления функций.