Захват и освобождение окном мыши — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Захват и освобождение окном мыши

2017-12-13 422
Захват и освобождение окном мыши 0.00 из 5.00 0 оценок
Заказать работу

Параметр wParam каждой кнопки включает маску бит, определяющую текущее состояние клавиатуры и кнопок мыши такое, например, как нажаты ли кнопки мыши, клавиша Shift и клавиша Ctrl. Параметр lParam содержит координаты x и y курсора мыши.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Координаты x,y

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

xPos = LOWORD(lParam);

yPos = HIWORD(lParam);

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

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

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

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

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

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

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

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

Таймер

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

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

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

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

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

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

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

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

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

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

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

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

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

KillTimer(hWnd, idTimer),

Где hWnd – handle окна

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

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



Поделиться с друзьями:

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.