sp_lab2
.pdf}
// Оконная функция
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { char str[] = "Text";
switch(msg){ |
|
// Необходимо обновить содержимое клиентской области окна |
|
case WM_PAINT: |
|
HDC hDC; |
|
PAINTSTRUCT ps; |
// Получить контекст окна |
hDC=BeginPaint(hWnd, &ps); |
|
TextOut(hDC, 20, 20, str, strlen(str)); // Нарисовать текст |
|
EndPaint(hWnd, &ps); |
// Освободить контекст окна |
break; |
|
// Закрытие окна. case WM_DESTROY:
// В очередь сообщений приложения помещается сообщение WM_QUIT
PostQuitMessage(0); break;
// Необработанные сообщения передаются в стандартную
// функцию обработки сообщений по умолчанию
}
default: return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
Дополните исходный текст программы примерами обработки сообщений из разделов 2.2.3, 2.2.4, 2.2.5, 2.2.8 этой лабораторной работы.
Запишите наблюдения об изменениях функциональных возможностей программы в отчет этой лабораторной работы.
2.4 Задание на самостоятельную работу
Дополнить программу из раздела 2.3 обработчиками нажатия клавиш.
1.Обработать комбинацию клавиш «Shift»+«стрелка»:
•при нажатой клавише «Shift» и клавише «стрелка влево» программа должна уменьшать ширину своего окна.
•при нажатой клавише «Shift» и клавише «стрелка вправо» программа
должна увеличивать ширину своего окна.
•при нажатой клавише «Shift» и клавише «стрелка вверх» программа должна увеличивать высоту своего окна.
•при нажатой клавише «Shift» и клавише «стрелка вниз» программа должна уменьшать высоту своего окна.
2.Обработать комбинацию клавиш «Ctrl»+«стрелка»:
•при нажатой клавише «Ctrl» и клавише «стрелка влево» программа должна перемещать свое окно влево.
•при нажатой клавише «Ctrl» и клавише «стрелка вправо» программа должна перемещать свое окно вправо.
•для клавиш «стрелка вниз» и «стрелка вверх» следует реализовать перемещение окна вниз и вверх соответственно.
3.Обработать событие перемещения мыши (WM_MOUSEMOVE). Обработчик сообщения WM_MOUSEMOVE должен выводить текущие координаты курсора мыши в заголовке окна.
Дополнительные условия:
•изменить размеры и положение окна можно при помощи функции SetWindowPos()
•истановить текст заголовка окна можно при помощи функции SetWindowText()
2.5Содержание отчета
Номер и название работы. Кто выполнил: Фамилия, инициалы, группа. Цель работы.
По содержанию пункта 2.3 внесите в отчет все, что там указано. Если требуется что-либо «описать», это должно быть описано, если задавалось «внести в отчет» - это также должно быть выполнено.
Результаты работы программы.
Листинг программы, которая задана на самостоятельную работу. Выводы о выполненной работе.
2.6Контрольные вопросы
1.Что происходит, когда пользователь нажимает или отпускает клавишу на клавиатуре?
2.В чем разница между аппаратными и символьными сообщениями?
3.Как приложение может получить информацию о нажатии на определенную клавишу в текущий момент времени?
4.Какие сообщения могут поступать приложению при работе пользователя
смышью?
5.От чего зависит количество сообщений WM_MOUSEMOVE, которые получает окно приложения?
6.Что необходимо сделать, чтобы окно приложения получало сообщения о двойных щелчках мыши? Что будет происходить в противном случае?
7.Как приложение может установить таймер? Что происходит после его установки?
8.Что такое идентификатор таймера?