Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО_лабораторные работы_часть 1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
397 Кб
Скачать
☆

2. Обработка сообщений от мыши

При вводе с помощью "мыши" Windows посылает прикладной программе сообщение от "мыши", когда пользователь перемещает курсор "мыши" (указатель) в/через окно или нажимает/освобождает кнопку "мыши", находясь в окне

Сообщение Описание

WM_MOUSEMOVE Пользователь перемещает курсор мыши в/через окно.

WM_LBUTTONDOWN Пользователь нажимает левую кнопку.

WM_LBUTTONUP Пользователь отпускает левую кнопку.

WM_LBUTTONDBLCLK Пользователь нажимает, отпускает и вновь нажимает левую кнопку (в рамках отпущенного системой времени).

WM_MBUTTONDOWN Пользователь нажимает среднюю кнопку.

WM_MBUTTONUP Пользователь отпускает среднюю кнопку.

WM_MBUTTONDBLCLK Пользователь нажимает, отпускает и вновь нажимает среднюю кнопку(в рамках отпущенного системой времени).

WM_RBUTTONDOWN Пользователь нажимает правую кнопку.

WM_RBUTTONUP Пользователь отпускает правую кнопку.

WM_RBUTTONDBLCLK Пользователь нажимает, отпускает вновь нажимает правую кнопку (в рамках отпущенного системой времени).

3. Координаты X,y

Параметр lParam содержит координаты x и y курсора мыши.

xPos = LOWORD(lParam);

yPos = HIWORD(lParam);

Курсор мыши. Управление курсором.

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

Программа управляет формой курсора двумя методами:

- Можно использовать встроенные в Windows курсоры.

- Можно использовать собственные курсоры.

- Использовать LoadCursor необходимо в обработчике события WM_MOUSEMOVE

Сообщения мыши в клиентской и не клиентской области окна.

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

Таймер

1. Установка таймера

Информация от таймера поступает двумя способами:

- в виде сообщения WM_TIMER через очередь прикладной программы.

- от функции многократного вызова, которая определяется

при вызове функции SetTimer.

Ниже показано, как установить ввод от таймера, используя сообщение WM_TIMER, на пятисекундный интервал:

idTimer = SetTimer(hWnd, 1, 5000, (FARPROC) NULL);

В примере интервал таймера устанавливается равным 5000миллисекунд. Это означает, что таймер будет генерировать сообщение каждые 5 сек. Второй аргумент, если он не равен 0, используется вашей программой для идентификации таймера.

Последний аргумент равный NULL означает, что функция многократного вызова для обработки ввода от таймера отсутствует, так что Windows посылает сообщение ввода таймера через очередь прикладной программы.

2. Функция таймера

При установке таймера функцией SetTimer можно определить функцию, которая будет вызываться при каждом событии от таймера. Для этого последним параметром в SetTimer передается указатель на функцию обработчик. Если он есть, то просто происходит вызов функции, если нет, то общение происходит через очередь прикладной программы.

Снятие таймера

Снятие таймера осуществляется функцией:

KillTimer(hWnd, idTimer),

Где hWnd – handle окна

IdTimer – уникальный идентификатор удаляемого таймера.

После удаления перестают поступать события от таймера.