Сообщение теста попадания


Последнее рассматриваемое сообщение WM_NCHITTEST (тест попадания в нерабочую область – nonclient hit-test) предшествует всем остальным сообщениям мыши рабочей и нерабочей области. Параметр lParam содержит значения X и Y экранных координат положения мыши. Параметр wParam не используется.

  • В приложениях Windows это сообщение обычно передается в DefWindowProc. В этом случае Windows использует сообщение WM_NCHITTEST для выработки всех остальных сообщений на основе положения мыши.

Для сообщений мыши нерабочей области возвращаемое значение функции DefWindowProc при обработке сообщения WM_NCHITTEST передается как параметр wParam в сообщении мыши.

  • Если функция DefWindowProc после обработки сообщения WM_NCHITTEST возвращает значение HTCLIENT, то Windows преобразует экранные координаты в координаты рабочей области и вырабатывает сообщение мыши рабочей области.

Замечание.Используя сообщениеWM_NCHITTEST,приложениеможет полностью запретить работу с мышью в том или ином окне (чего делать, конечно, не рекомендуется), включив в оконную процедуру при обработке сообщений следующий код:

case WM_NCHITTEST: return (LRESULT) HTNOWHERE;

Этой обработкой полностью запрещаются все сообщения мыши рабочей и нерабочей области окна.

  • Кнопки мыши просто не будут работать до тех пор, пока мышь будет находится где-либо внутри окна, включая значок системного меню, кнопки минимизации, максимизации и закрытия окна.

Захват мыши

  • Оконная процедура обычно получает сообщения мыши только тогда, когда курсор мыши находится в рабочей или в нерабочей области окна.

Но иногда программе может понадобиться получать сообщения от мыши и тогда, когда курсор мыши находится вне окна. Если это необходимо сделать, то приложение может произвести захват(capture) мыши.

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

  • Пока мышь захвачена, системные функции клавиатуры тоже не действуют.

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

  • Освободить мышь, т.е. возвратить обработку мыши в нормальный режим, можно при помощи функции ReleaseCapture.

Таймер в Windows является устройством ввода информации, которое периодически извещает приложение о том, что истек заданный интервал времени.

  • Приложение сообщает системе Windows интервал времени, а затем Windows периодически посылает приложению сообщения WM_TIMER, сигнализируя об истечении интервала времени.

Рассмотрим возможные случаи применения таймера в Windows:

  • Режим автосохранения – таймер может предложить программе сохранять работу пользователя на диске всегда, когда истекает заданный интервал времени.
  • Поддержка обновления информации о состоянии – программа может использовать таймер для вывода на экран обновляемой в реальном времени, постоянно меняющейся информации, связанной либо с системными ресурсами, либо с процессом выполнения отдельной задачи.
  • Завершение демонстрационных версий программ – некоторые демонстрационные версии программ рассчитаны на свое завершение через какое-либо заданное время после запуска. Таймер может сигнализировать таким приложениям, когда их время истекает.
  • Эмуляция многозадачности –хотя Windows является вытесняющей многозадачной средой, иногда самое эффективное решение для программы – как можно быстрее вернуть управление Windows. Если программа должна выполнять большой объем работы, она может разделить задачу на части и обрабатывать каждую часть при получении сообщения от таймера.
  • Задание темпа изменения – графические объекты в играх или окна с результатами в обучающих программах могут нуждаться в задании установленного темпа изменения.


Дата добавления: 2017-01-26; просмотров: 893;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.006 сек.