Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT | страница 48



Окно появится на экране только после того, как будет вызван метод ShowWindow. В качестве параметра методу ShowWindow передается параметр m_nCmdShow. Переменная m_nCmdShow является элементом класса CWinApp. Его назначение соответствует параметру nCmdShow функции WinMain, то есть определяет, как должно отображаться главное окно приложения сразу после его запуска.

После того как окно появилось на экране, мы передаем ему сообщение WM_PAINT, вызывая метод UpdateWindow. По этому сообщению приложение должно обновить содержимое окна. В нашем первом приложении мы ничего не будем отображать в окне, поэтому данный метод можно не вызывать.

В конце метода InitInstance мы вызываем оператор return и возвращаем значение TRUE, означающее, что инициализация приложения завершилась успешно и можно приступать к обработке очереди сообщений.

Если метод InitInstance вернет значение FALSE, приложение немедленно завершится. Мы использовали эту возможность в приложении MFHello, описанном выше.

>//=====================================================

>// Метод InitInstance класса CMFStartApp

>// Переопределяем виртуальный метод InitInstance

>// класса CWinApp. Он вызывается каждый раз при запуске

>// приложения

>//=====================================================

>BOOL CMFStartApp::InitInstance() {

> // Создаем объект класса CMFStartWindow

> m_pMainWnd = new CMFStartWindow();


> // Отображаем окно на экране. Параметр m_nCmdShow

> // определяет режим в котором оно будет отображаться

> m_pMainWnd–>ShowWindow(m_nCmdShow);


> // Обновляем содержимое окна

> m_pMainWnd–>UpdateWindow();

> return TRUE;

>}

Чтобы создать окно, мы создаем объект класса CMFStartWindow. Такой объект не является собственно окном, которое пользователь видит на экране компьютера, а представляет собой внутреннее представление окна. Для создания окна предназначается метод Create, определенный в классе CFrameWnd. Он создает окно и связывает его с объектом Си++, в нашем случае с объектом класса CMFStartWindow:

>//=====================================================

>// Конструктор класса CMFStartWindow

>//=====================================================

>CMFStartWindow::CMFStartWindow() {

> // Создаем окно приложения, соответствующее

> // данному объекту класса CMFStartWindow

> Create(NULL, "Hello MFC");

>}

Для упрощения мы поместили описание классов, определения их методов и определения глобальных переменных в одном файле. На практике описания различных классов размещают в отдельных включаемых файлах. А определения методов записывают в программные файлы, имеющие расширение cpp.