Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7 - 8 лаба по оссп в исходнике отавлены нужные...doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.17 Mб
Скачать

Оконная функция. Назначение, параметры, обработка сообщений

Оконная функция – функция, вызываемая операционной системой, которая контролирует внешний вид и поведение ассоциированного с ней окна. Функция принимает и обрабатывает все сообщения к этому окну.

LRESULT CALLBACK WindowProc(

HWND hwnd, // Дескриптор окна

UINT msg, // Идентификатор сообщения

WPARAM wParam, // Первый параметр сообщения

LPARAM lParam // Второй параметр сообщения

);

Возвращаемое значение определяется посланным сообщением.

Функция CallWindowProc передаёт сообщение указанной оконной функции:

LRESULT CallWindowProc(

WNDPROC lpPrevWndFunc, // Указатель на

// предыдущую процедуру

HWND hWnd, // Дескриптор окна

UINT msg, // Сообщение

WPARAM wParam, // Первый параметр сообщения

LPARAM lParam // Второй параметр сообщения

);

Функция DefWindowProc осуществляет обработку сообщения по умолчанию.

LRESULT DefWindowProc(

HWND hWnd, // Дескриптор окна

UINT msg, // Сообщение

WPARAM wParam, // Первый параметр сообщения

LPARAM lParam // Второй параметр сообщения

);

Обновление оконной области на экране

Для обновления оконной области посылается сообщение WM_PAINT:

switch (message) {

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps); //получаем дескриптор

//контекста устройства

RECT rt; // TODO: Add any drawing code here

GetClientRect(hWnd, &rt); //Получаем клиентскую

//область

EndPaint(hWnd, &ps); //Завершаем рисование

break;

}

Так как сообщение WM_PAINT обладает наименьшим приоритетом по сравнению с остальными сообщениями, то для немедленной перерисовки рабочей области окна надо вызвать функцию UpdateWindow(hWnd).

Обработка сообщений производится с помощью конструкции

switch (message) {

case WM_CREATE: ... break;

case WM_DESTROY: ... break;

case WM_CHAR: ... break;

case WM_DESTROY:

……..

default: ...

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

}

Варианты заданий к лабораторной работе № 1

Вариант

Схема подчинения окон

Начальное положение окон

1

2

3

4

5

6

7

Вариант

Схема подчинения окон

Начальное положение окон

8

9

10

11

12

13

14

Лабораторная работа № 2 диалоговые окна

Цель работы: изучить вопросы проектирования и создания модальных и немодальных диалоговых панелей на базе Win32/64 API.

Изучаемые вопросы

  1. Назначение и классификация диалоговых окон.

  2. Создание и отображение диалогового окна на экране.

  3. Шаблон, ресурсы диалогового окна.

  4. Задание размеров диалогового окна.

  5. Управляющие элементы диалогового окна.

  6. Обработка сообщений от элементов управления диалогового окна.

  7. Сообщения работы с модальными и немодальными диалоговыми окнами.

  8. Обмен информации и проверка корректности вводимых данных.

  9. Элементы управления:

    1. Поле для ввода. Кнопка. Список. Комбинированный список. Слайдер.

    2. Сообщения к элементам управления SendMessage, SendDlgItemMessage.

    3. Обработка сообщений от элементов диалогового окна.

    4. Корректность вводимых данных.

  10. Окна сообщений.

  11. Стандартные диалоги.