Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 семестр, WinAPI, MFC.pdf
Скачиваний:
370
Добавлен:
15.06.2014
Размер:
6.17 Mб
Скачать

Для отображения окна в типичном приложении необходимо:

Зарегистрировать класс окна функцией RegisterClassEx.

Создать окно функцией CreateWindow.

Отобразить окно функцией ShowWindow.

Обновить рабочую (клиентскую) область окна функцией UpdateWindow.

Цикл обработки очереди сообщений.

После создания и отображения окна функция WinMain должна подготовить приложение к получению информации от пользователя через клавиатуру и мышь.

Windows поддерживает очередь сообщений (message queue) для каждой программы, работающей в данный момент в системе. Когда происходит ввод информации, Windows преобразовывает ее в сообщение, которое помещается в очередь сообщений приложения.

GetMessage – это функция, при помощи которой цикл обработки начинает извлекать сообщения из очереди.

//Запускаем цикл обработки очереди сообщений. Функция GetMessage получает

//сообщение из очереди, выдает false при выборке из очереди сообщения WM_QUIT while(GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

// Преобразование сообщений, полученных с помощью

клавиатуры

 

DispatchMessage(&msg);

// Отправляем сообщение оконной процедуре WndProc

}

 

return msg.wParam;

 

1.первыйпараметр— указательнаструктурутипаMSG

2.второйпараметр - указываетнаокно, которомудолжнобудетпереданосообщение, NULL или0 означают, чтопрограммабудетполучатьсообщенияотвсехокон, которые былисозданыданнойпрограммой

3.третий и четвертый параметры указывают на диапазон сообщений, который будет обрабатываться в программе.

WndProc

WndProc — это "оконная процедура" для созданного окна.

// --- прототип WndProc

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

{

return( DefWindowProc(hWnd, message, wParam, lParam));

}

!WndProc вызывается непосредственно Windows и не может вызываться приложением

напрямую. Как и большинство функций Windows, в функции окна используется соглашение о связях языка Паскаль, поэтому объявление функции CALLBACK обязательно.

Windows вызывает WndProc: