Практикум программирования на C++ под Windows
comp.soft.prog.cppwin
Выпуск #8
22/10/2000
*** ПРОСТЕЙШАЯ ОКОННАЯ ПРОГРАММА ****************************************
Мне думается, что не стоит долго останавливаться на консольных приложениях.
Главное пока что вы знаете что они есть...
Начиная с этого выпуска мы займемся оконными программами - имеющими окна.
Минимальная оконная программа
В отличие от консольного приложения, проект оконного приложения должен иметь
тип Win32 Application. Минимум функциональности для приложения Windows - это
программа с единственным окном. Такое приложение должно содержать функции:
WinMain - основная ф-ция приложения, в которой выполняется:
Регистрация класса главного окна (RegisterClass)
Создание главного окна (CreateWindow)
Цикл обработки сообщений (GetMessage, TranslateMessage, DispatchMesssage)
Оконная процедура главного окна
Регистрация оконного класса - это определение шаблона, на основании которого
будет создаваться наше окно. Самое важное в классе окна - это его название
и оконная процедура.
Основная часть функции WinMain - это цикл обработки сообщений. Именно
в нем находится выполнение программы все основное время. Цикл состоит
в получении от состемы очередного сообщения (message) и его обработки
в зависимости от типа сообщения. Завершается цикл при получении сообщения
WM_QUIT.
MSG msg; //Структура для хранения параметров сообщения
while (GetMessage(&msg, (HWND) NULL, 0, 0)){ //Получение очередного сообщения
TranslateMessage(&msg); //Предобработка для клавиатурных сообщений
DispatchMessage(&msg); //Распределение сообщений по окнам
}
return msg.wParam; //Завершение работы программы
Оконная процедура (WindowProc) задает поведение окна, в ней выполняется
обработка сообщений, поступающих в главное окно. За один вызов функции
обрабатывается только одно сообщение. Оконной процедурой главного окна (как
min) должно обрабатываться сообщение о закрытии окна, остальные сообщения
могут быть переданы на обработку по умолчанию:
LONG FAR PASCAL MainWndProc( //Оконная процедура главного окна
HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch (msg){
case WM_DESTROY: //Окно закрыто
PostQuitMessage(0); //Завершаем приложение
break;
default: //Обработка сообщений по умолчанию
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0L;
}
В следующем выпуске
- приложение: полный текст простейшей оконной программы.
Дальнейшее объяснение будет сосредоточено (в основном) на дополнении оконной
процедуры главного окна. После получения следующего выпуска вы сможете
скомпилировать минимальную программу и начать экспериментировать с ней.
*************************************************************************
Количество подписчиков: 5482
Архив Рассылки
Никита Зимин
Nikita_Zeemin@mail.ru