ПЕРВАЯ ПРОГРАММА С ИСПОЛЬЗОВАНИЕМ MFC
Иерархия классов MFC. Файл AFXWIN.H.
Создание MFC приложения.
Класс CMyMainWnd. Класс CMyApp. Создание
экземпляра приложения.
Иерархия
классов MFC
Библиотека MFC (Microsoft Foundation Classes) содержит
большую иерархию классов, написанных на С++. В ее вершине находится класс СObject,
который содержит различные функции, используемые во время выполнения программы.
Некоторые классы порождаются непосредственно от CObject:
·
ССmdTarget предназначен для обработки сообщений;
·
СFile предназначен для работы с файлами;
·
CDC обеспечивает поддержку контекстов устройств, в этот
класс включены практически все функции графики GDI.;
·
CGDIObject является базовым классом для различных GDI-объектов,
таких как перья, кисти, шрифты и другие;
·
СMenu предназначен для манипуляций с меню;
От класса CCmdTarget порождается очень важный
класс CWnd. Он является базовым для создания всех типов окон, включая
масштабируемые ("обычные") и диалоговые, а также различные элементы
управления. Наиболее широко используемым производным классом является
CFrameWnd. Как Вы увидите в дальнейшем, в большинстве программ главное окно
создается с помощью именно этого класса.
От класса CCmdTarget, через класс CWinThread,
порождается, наверное, единственный из наиболее важных классов, обращение к
которому в MFC-программах происходит напрямую: CWinApp. Это один из
фундаментальных классов, поскольку предназначен для создания самого приложения.
В каждой программе имеется один и только один объект этого класса. Как только
он будет создан, приложение начнет выполняться.
Файл
AFXWIN.H
Все MFC программы должны включать файл AFXWIN.H. Он
автоматически подключает большинство библиотечных файлов MFC, включая
WINDOWS.H. Включая этот файл, Вы тем самым подготавливаете все необходимое для
создания WINDOWS приложения.
Создание MFC
приложения
Запускаем Visual C++. Затем выбираем File->New.В
появившемся окошке New обращаем внимание, что активна вкладка Projects.
Выбираем тип проекта Win32 Application. Этот тип -
приложение под Windows, но без использования MFC. MFC же мы подсоединим позже
.
Даем проекту имя (например mfc). Вы можете дать любое.
В последующих диалоговых окнах отвечайте по умолчанию.
После этого у вас возникнет пустой проект. Теперь нам в
него надо добавить файлы. Для этого снова выбираем File->New. Сейчас уже
активна вкладка Files. В списке файлов выберете Source file
Впечатайте имя файла и убедитесь, что галочка Add to
Project стоит.
Сейчас наш проект не использует MFC (такой мы выбрали
тип проекта). Нам надо указать явно, что мы хотим использовать MFC. Для этого
заходим в меню Project и далее Settings.
В диалоге Project Settings выбираем Use MFC in a
Shared DLL. Теперь наш проект будет использовать MFC.
Закройте диалог, нажав OK.
Вставьте в файл вашего проекта следующий код:
#include
<afxwin.h>
class
CMyMainWnd : public CFrameWnd
{
public:
CMyMainWnd()// конструктор
{
Create(NULL,"My
title");
}
};
class
CMyApp : public CWinApp
{
public:
CMyApp(){}; // конструктор
virtual BOOL InitInstance()
{
m_pMainWnd = new CMyMainWnd();
m_pMainWnd->ShowWindow(SW_SHOW);
return
TRUE;
}
};
CMyApp
theApp;
Запустите программу. Должно появиться окно с заголовком “My title”:
В простейшем случае программа, написанная с помощью
MFC, содержит два класса, порождаемые от классов иерархии библиотеки:
· Класс CMyApp, порожденный от
CWinApp,
и предназначенный для создания приложения;
· Класс CMyMainWnd, порожденный от CFrameWnd,
предназначенный для создания окна.
Эти два класса обязательны для любой программы.
Класс CMyMainWnd
В классе главного окна ничего кроме контруктора нет. В
конструкторе вызывается метод Create, взятый от родительского класса. Обратите
внимание, что класс нашего окна потомок от класса CFrameWnd из библиотеки MFC.
Это видно из строчки
class
CMyMainWnd : public CFrameWnd
В родительском классе и есть метод create. Он
принимает много параметров, но большинство из них можно не указывать, так как
они задаются по умолчанию. Мы указали только первые два. Первый NULL означает,
что параметры окна мы берём стандартные. Второй отвечает за заголовок окна.
Класс CMyApp
Класс CMyApp приложения порождается от CWinApp. Этот класс
отвечает за работу программы. В примере используется член-функция со следующим прототипом:
virtual
BOOL CWinApp::InitInstance();
Это виртуальная функция, которая вызывается каждый раз
при запуске программы. В ней должны производиться все действия, связанные с
инициализацией приложения. Функция должна возвращать TRUE при успешном завершении
и FALSE в противном случае. В нашем случае, в функции сначала создается объект
класса CMyMainWin, и указатель на него запоминается в переменной
m_pMainWnd. Когда окно создано, вызывается функция c прототипом:
BOOL
CWnd::ShowWindow(int How);
Параметр How определяет,
каким образом окно будет показано на экране. Наиболее распространенные значения
следующие:
Константа |
Действие |
SW_HIDE |
Окно
становится невидимым |
SW_MAXIMIZE |
Окно
максимизируется |
SW_MINIMIZE |
Окно минимизируется |
SW_SHOW |
Окно отображается,
если было невидимо |
SW_RESTORE |
Окно
приводится к нормальному размеру |
При первом вызове в качестве первого параметра функции
можно подставить член m_nCmdShow, в котором хранится значение кода отображения
окна, переданное в программу при запуске (например, в ярлыке Windows 95
пользователь может определить, как показывать окно при запуске приложения).
Создание
экземпляра приложения
В конце программы в строке
CMyApp theApp;
создаётся экземпляр нашего приложения.