www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 71 - Что формирует MFC AppWizard

    Сегодня было шикарное северное сияние. Прям как Тверская ночью :-)

Описание

AppWizard формирует файлы и классы в зависимости от типа формируемого приложения. Конечно включение поддержки баз данных и составных документов влияет на формируемые файлы. Мы рассмотрим простые случаи.

SDI

При генерации приложения данного типа формируются следующие классы в виде заголовочного файла *.H и файла реализации *.CPP. Будет созданно 5 классов.
* - имя проекта
CAboutDlg    - класс диалога о программе (About)
C*SDIApp     - класс приложения ( включает порожденый класс от CWinApp внутри которого WinMain) 	
C*SDIDoc     - класс документа
C*SDIView    - класс просмотра	
CMainFrame   - класс рамки окна

MDI

Обратите внимание, что различия очень маленькие SDI меняется на MDI. Кроме того различия очень маленькие есть в коде. Например, для формирования шаблона в SDI используется CSingleDocTemplate, а в MDI - MultiDocTemplate
* - имя проекта
CAboutDlg    - класс диалога о программе (About)
C*MDIApp     - класс приложения ( включает порожденый класс от CWinApp внутри которого WinMain) 	
C*MDIDoc     - класс документа
C*MDIView    - класс просмотра	
CMainFrame   - класс рамки окна

Dialog Based

Формируется 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 для добавления и удаления функций.


Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz