Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

sp_lab2

.pdf
Скачиваний:
4
Добавлен:
01.03.2016
Размер:
159.88 Кб
Скачать
// Отображение окна.
ShowWindow(hWnd, SW_SHOWNORMAL);
// Обновление клиентской области окна.
UpdateWindow(hWnd);
// Запуск цикла обработки очереди сообщений.
// Функция GetMessage получает сообщение из очереди, выдает false при // выборке из очереди сообщения WM_QUIT
while(GetMessage(&msg, NULL, 0, 0)){
// Преобразование некоторых сообщений, полученных с помощью клавиатуры
TranslateMessage(&msg);
// Отправить сообщение оконной функции
DispatchMessage(&msg);
}
return msg.wParam;

}

// Оконная функция

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.Что такое идентификатор таймера?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]