簡體   English   中英

確定鼠標是否水平移動(C ++)

[英]Determine whether the mouse moved horizontally (C++)

我可以通過捕獲WM_MOUSEMOVE消息來檢測光標在窗口上的移動。 該消息包含x和y坐標,但是無論用戶是嘗試水平還是垂直移動鼠標,我都需要弄清楚它。 如果x坐標的變化遠大於y,我想忽略垂直運動。 我是否需要使用其他消息? 謝謝!

大衛是對的,您可能需要跟蹤狀態。 但是,有一個函數GetMouseMovePointsEx ,它將為您提供多達64個鼠標的先前坐標。 您仍然必須擁有一個用於自己存儲坐標的地圖(或其他數據結構),但是該功能應該為您完成很多工作。 再說一次,我不確定該方法將如何與更手動的方法進行比較,從而決定鼠標從何處開始,以便您知道要與之進行比較。 *(請參閱下面的編輯)

一旦有了先前的坐標,就可以將起始位置與最新位置進行比較。 如果差異大於某個任意值(您決定),則執行代碼。

*編輯:只需閱讀我上面鏈接的GetMouseMovePointsEx文檔中的GetMouseMovePointsEx

GetMouseMovePointsEx函數在鼠標坐標歷史記錄中搜索該點。 如果函數找到了該點,它將返回提供的點之前(包括該點)的最后nBufPoints。

如果您的應用程序提供了時間戳,則GetMouseMovePointsEx函數將使用它來區分在不同時間記錄的兩個相等點。

應用程序應使用從WM_MOUSEMOVE消息接收到的鼠標坐標來調用此函數,並將其轉換為屏幕坐標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM