Для того чтобы написать какое-либо приложение, прежде всего необходимо
создать проект. Разработчики фирмы
size=2>Microsoft постарались (уже давно) и создали специальные мастера,
которые позволяют — после ответов на ряд вопросов — получить работающий каркас
приложения. Вам остается только наполнить его конкретным содержанием. Вызвав
диалог New, выберите в нем тип приложения
MFC AppWizard (exe), а в поле
face="Courier New" size=2> Project Name — имя создаваемого приложения
FrameWork. После нажатия кнопки
face="Courier New" size=2>ОК запустится мастер
size=2>AppWizard, и вы увидите его первое окно (рис. 2.1).
.........................................................1
Рис. 2.1. Первое окно мастера
size=2>AppWizard
В этом окне представлены все три основных типа приложений
face="Courier New" size=2>Windows: однодокументное, многодокументное и на
базе диалога.
Примечание
Обратите внимание на флажок Document/View architecture
support? (Нужна поддержка архитектуры документ/представление?), которого вы не
увидите в версиях Visual C++ ниже 6.0. В них приходилось вручную удалять
фрагменты созданного каркаса приложения, поскольку зачастую автоматически
подключаемая поддержка этой архитектуры (безусловно, очень удобной и полезной)
не нужна.
Сбросьте флажок Document/View architecture
support? и выберите переключатель Single
document, поскольку нас сейчас интересуют самые основы
Примечание
Оставьте без изменения поддержку английского языка, т. к.
русского все равно нет и неизвестно, когда появится.
Смело дважды нажимайте кнопку Next,
чтобы перейти к третьему окну мастера, поскольку во втором окне задается
поддержка для работы с базами данных. В третьем окне сбросьте флажок
face="Courier New" size=2>ActiveX Controls (элементы управления
face="Courier New" size=2>ActiveX) и переходите к следующему окну (рис.
2.2), в котором предлагается выбор некоторых дополнительных возможностей.
Примите установки, предложенные по умолчанию, и нажмите кнопку Advanced...
(Дополнительно...), чтобы выбрать стили окна (рис. 2.3).
Для демонстрации влияния этих стилей, которые подробно будут описаны ниже,
установим флажок Minimized (Свернутое).
.........................................................2
Рис. 2.2. Четвертое окно мастера
size=2>AppWizard
.............................................................3
Рис. 2.3. Установка стиля основного окна приложения
Вернитесь к четвертому окну мастера и можете нажать кнопку
face="Courier New" size=2>Finish (Готово), поскольку в остальных окнах мы
принимаем установки по умолчанию. На экране появится окно с информацией о
проекте (рис. 2.4).
Примечание
Заданное вами имя проекта служит основой для имени класса
приложения, изменить которое можно в пятом окне мастера.
....................................................................4
Рис. 2.4. Информация о вновь созданном проекте
После того как вы нажмете кнопку ОК,
мастер создаст для вас каркас приложения и завершит свою работу.
Постройте исполняемый файл, выполнив команду
size=2>Build, и запустите его. На экране ничего не изменится, но на
панели задач появится кнопка минимизированного приложения. Приложение
face="Courier New" size=2>FrameWork строит обычное, традиционное окно,
хорошо знакомое всем пользователям системы
size=2>Windows (рис. 2.5).
Его можно перемещать по экрану, закрыть, минимизировать (уменьшить до размера
пиктограммы) или максимизировать (увеличить до размеров экрана), а также
изменять его размер. Основное назначение этого примера заключается в том, что он
позволяет нам познакомиться с основными принципами, которые положены в основу
построения программ на базе библиотеки классов
size=2>MFC.
Программа имеет три класса объектов:
size=2>CFrameWorkApp, CMainWnd и
CChildWnd. Первый позволяет создать
объект "приложение", второй — объект "фрейм окна", и третий — сам объект "окно".
Каждое приложение, использующее библиотеку
size=2>MFC, может содержать только один объект "приложение", который
конструируется вместе с другими глобальными объектами C++ (определение —
face="Courier New" size=2>CFrameWorkApp theApp) и уже доступен, когда
Windows вызывает функцию
face="Courier New" size=2>WinMain. На данном этапе знакомства — это самый
существенный момент для успешного программирования под
size=2>Windows на базе MFC.
Отвлечемся немного от основной темы, чтобы рассмотреть вспомогательные, но
тесно связанные с программированием на Visual C++ вопросы.
Примечание
Библиотеку классов MFC можно использовать не только для
написания полноценных Windows-приложений, но и в консольных приложениях.
..........................................................5
Рис. 2.5. Основное окно приложения
size=2>FrameWork
Соглашения об именах библиотеки MFC
В качестве префикса, обозначающего имя класса, библиотека
face="Courier New" size=2>MFC использует заглавную букву С от слова
"class" (класс), за которым идет имя,
характеризующее его назначение. Например,
size=2>CWinApp — класс, определяющий приложение,
size=2>CWnd — базовый класс всех оконных объектов,
face="Courier New" size=2>CDialog — класс окон диалога и т. д. Мы также
будем придерживаться этого соглашения в приводимых примерах. Например, программа
FrameWork содержит определения трех классов:
size=2>CFrameWorkApp, CMainFrame и
CChildWnd.
Для имен методов классов используется три способа. При первом способе имя
объединяет глагол и существительное, например,
size=2>Loadlcon (Загрузить пиктограмму) или
size=2>DrawText (Нарисовать текст). При втором, имя метода состоит только
из существительного, например, DialogBox
(Блок диалога). Для функций, предназначенных для преобразования одного типа в
другой, обычными являются такие имена, как
size=2>XtoY(из X в Y).
Для членов классов библиотеки MFC
принят следующий способ назначения имен: обязательный префикс
face="Courier New" size=2>m_ (от
size=2>class member — член
класса), затем идет префикс, характеризующий тип данных, и завершается все
содержательным именем переменной, например,
size=2>m_pMainWnd, где р —
префикс, описывающий указатель (для переменных не членов класса префикс
face="Courier New" size=2>m_ не используется, чтобы можно было отличить
обычные переменные от элементов любых классов, а не только классов библиотеки
MFC). В своих примерах я придерживаюсь
аналогичного способа формирования имен, и вам рекомендую поступать также.
Включаемые файлы
Если вы посмотрите начало любого файла, то заметите, что одной из первых в
них стоит строка #include "
face="Courier New" size=2>stdafx.h". Этот включаемый файл служит для
подключения к программе необходимых ей библиотечных файлов. Когда вы будете
писать большие приложения, вам обязательно потребуется использование заранее
откомпилированных заголовочных файлов, что поможет существенно сократить
требуемое время компиляции. Прекомпилированные заголовки удобны, если у вас есть
несколько заголовков, которые должны быть включены во все или в большинство
ваших исходных файлов. Однако их использование полезно только в том случае, если
сами они не меняются между компиляциями.
Чтобы продемонстрировать вам способ сокращения времени компиляции, мы
использовали прекомпилируемый файл
size=2><stdafx.h>, который должен включать в себя все наиболее
часто используемые заголовочные файлы. В данном случае это и файл
<afxwin.h>, содержащий описания основных классов библиотеки и сводящий
воедино все включаемые файлы, необходимые для базового функционирования
face="Courier New" size=2>MFC, и
size=2><afxext h> содержаший описания классов общего назначения,
макросы, базовые типы данных MFC и
подключающий стандартные библиотеки ( run-time library) языка C,
и <afxdtctl.h> и
face="Courier New" size=2><afxcmn.h>, где находятся компоненты
поддержки стандартных и совместимых с Internet Explorer 4 элементов управления
По мере изложения материала мы ближе рассмотрим классы, определяемые во
включаемых файлах MFC. Здесь же отметим изменения, которые претерпел основной
включаемый файл Windows
size=2><windows.h>.
Как и раньше, каждая Windows-программа должна содержать этот файл. Отличие же
заключается в том, что в своем последнем виде он уже не представляет собой
огромного "монстра", а разбит на четыре сравнительно небольших файла:
<windef.h>, содержащий определения базовых типов,
size=2><winbase.h>, описывающий базовые функции 32-разрядного API,
<wingdi.h> и
face="Courier New" size=2><winuser.h>, включающие объявления
процедур GDI и
size=2>USER, а также определения констант и макросов для соответствующих
модулей системы.
В заключение темы стандартных включаемых файлов скажу несколько слов об
определении
idefine VC_EXTRALEAN
применение которого позволяет исключить из процесса компиляции редко
используемые части заголовочных файлов Windows (для С- и С++-программ, не
обращающихся к MFC, определение имеет вид #
size=2>defme WIN32 EXTRA_LEAN).
По материаллам сайта: www.realcoding.net
16.02.2006