То, что я собираюсь сделать, очень просто, я хочу скрыть курсор мыши через 1 секунду, если движение не двигается или не щелкает.
Я искал и видел, что кто-то рекомендует использовать WM_MOUSEMOVE. Однако в моем приложении WM_MOUSEMOVE просто определяет, находится ли мышь в клиентской области. Если это так, приложение получает WM_MOUSEMOVE постоянно. Я прочитал страницу MSDN, но я все еще в замешательстве.
Используйте WM_SETCURSOR.
Используйте WM_SETCURSOR для работ, связанных с курсором. Это сообщение сделано для этой цели. Ваше упоминание клиентской области говорит о том, что вам, вероятно, нужно использовать SetCapture
API тоже.
Другой способ (или более современный способ) использует TrackMouseEvent
, Это обеспечивает WM_MOUSEHOVER.
Рекомендация верна. Что вам нужно сделать, это определить таймер (например, тот, который запускает сообщение WM_TIMER).
Вы активируете его первым движением мыши (WM_MOUSEMOVE). Если движение мыши не произойдет в течение интервала, который вы определили для таймера, событие WM_TIMER сработает, и вы сможете затем скрыть мышь.
Каждый раз, когда происходит событие WM_MOUSEMOVE, вы просто перезапускаете таймер (используя его выделенный API). Так что события WM_MOUSEMONVE препятствуют истечению таймера. Если WM_MOUSEMOVE перестанет прибывать (потому что вы больше не двигаете мышь), таймер будет работать без прерываний, пока не истечет и не сработает.