Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора 130стр.doc
Скачиваний:
93
Добавлен:
15.06.2014
Размер:
2.49 Mб
Скачать

32 Структура windows приложения.

Каркас приложения.

#include <windows.h> – обязательно включаемый файл, содержащий директивы #include для всех остальных стандартных файлов заголовков Windows. windows.h включает в себя много других заголовочных файлов, содержащих объявления функций Windows, структур Windows, новые типы данных и числовые константы.

В любом типовом приложении имеется только две функции: WinMain и WndProc.

WinMain — это точка входа в программу. Это аналог стандартной функции main языка С.

//прототип WinMain

int WINAPI WinMain(

HINSTANCE hInstance, // Дескриптор экземпляра приложения

HINSTANCE hPrevInstance, // В Win32 всегда равен NULL, предыдущий экземпляр

LPSTR lpCmdLine, // Указатель на командную строку.

int nCmdShow ) // Определяет, как приложение первоначально отображается на дисплее:

Регистрация класса окна.

С помощью функции RegisterClassEx регистрируется класс окна.

Класс окна определяет общее поведение нового типа окон, включая адрес новой оконной процедуры.

Указывается: имя класса окон, адрес оконной функции, стиль класса окон, экземпляр приложения, пиктограмма для окон, курсор мыши для окон, кисть для окон, ресурс меню окон, дополнительная память

Создание окна.

CreateWindow- это функция, с помощью которой приложение само создаёт окно и возвращает дескриптор созданного окна.

Дескриптор окна – это один из важнейших описателей, которыми оперирует программа для Windows. Для многих функций Windows требуется дескриптор окна, благодаря которому Windows знает, к какому окну применить функцию.Этот описатель хранится в переменной hWnd, которая имеет тип HWND (описатель окна — handle to a window).

Указывается: имя класса окна, заголовок окна, стиль окна, начальное положение по x и y, начальный размер по x и y, описатели родительского окна, окна меню, экземпляра , параметры создания.

! Нельзя путать понятия класс окна и окно. Класс окна определяет оконную процедуру и некоторые другие характеристики окон, создаваемых на основе этого класса. При создании окна, определяются дополнительные характеристики окна, уникальные для него

Отображение окна.

К тому времени, когда функция CreateWindow возвращает управление программе, окно уже создано внутри Windows. Однако, на экране монитора оно еще не появилось. Необходимы еще два вызова.

ShowWindow(hWnd, nCmdShow); // Отображаем окно.

UpdateWindow(hWnd); // Обновляем содержимое клиентской области окна.

После вызова функции UpdateWindow, окно окончательно выведено на экран.

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

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

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

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

while(GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg); // Преобразование сообщений, полученных с помощью клавиатуры

DispatchMessage(&msg); // Отправляем сообщение оконной процедуре WndProc

}

return msg.wParam;

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

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

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

{

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

}

Windows вызывает WndProc: при создании окна, при последующем удалении окна, при изменении размеров окна, при перемещении окна, при свертывании окна, при выборе пункта меню, при манипуляциях с полосами прокрутки или с мышью, сообщение о необходимости перерисовать рабочую область.

DefWindowProc для формировании информационных потоков сообщений W-s, и ее указание обязательно.

Обработка сообщений типового приложения.

WM_CREATE – первое сообщение, обрабатываемое оконной процедурой, производя разовую инициализацию окна.

WM_PAINT - одно из важнейших сообщений для программирования под Windows. Оно сообщает программе, что часть или вся рабочая область окна недействительна (invalid), и ее следует перерисовать.

WM_DESTROY –сообщение, показывающее, что Windows находится в процессе ликвидации окна в ответ на полученную от пользователя команду.