我想在用戶(點擊和)同時釋放左右鼠標時編程特定行爲。有沒有一種已知的方法來捕捉這樣的事件/手勢。我意識到如何捕獲leftButtonUp和rightButtonUp,但不知道如何捕獲此事件。Win32:如何在同一時間點擊左右鼠標按鈕
如果按下左按鈕,然後右鍵按下增量延遲,那沒問題。當用戶釋放右側按鈕/左側按鈕時,如果在定義的epsilon時間內釋放其他按鈕,則會引發此類事件。
我想在用戶(點擊和)同時釋放左右鼠標時編程特定行爲。有沒有一種已知的方法來捕捉這樣的事件/手勢。我意識到如何捕獲leftButtonUp和rightButtonUp,但不知道如何捕獲此事件。Win32:如何在同一時間點擊左右鼠標按鈕
如果按下左按鈕,然後右鍵按下增量延遲,那沒問題。當用戶釋放右側按鈕/左側按鈕時,如果在定義的epsilon時間內釋放其他按鈕,則會引發此類事件。
WinAPI中沒有這樣的事件,但您可以自己跟蹤它。所有按鈕向下/向上消息wParam包含所有按鈕的狀態的信息,在事件的時間:
MK_LBUTTON 0x0001 The left mouse button is down.
MK_MBUTTON 0x0010 The middle mouse button is down.
MK_RBUTTON 0x0002 The right mouse button is down.
因此,你需要不斷的變化的跟蹤和定義將過濾掉所有事件閾值你喜歡考慮作爲「同時點擊/釋放」
您需要編寫自己的處理方法。單擊第一個按鈕時,單擊另一個按鈕時記錄,看看第一個按鈕是否仍然關閉,以及延遲是否小於您提供的任何增量。
If GetAsyncKey(0x01) && GetAsyncKey(0x02){
DoEvent();
}
提供的代碼可能會有所幫助,但爲了使其成爲一個很好的答案,您還應該描述/解釋您的代碼爲什麼/如何正確地解決問題。 – ZygD
沒有代碼是需要的,因爲沒有用戶實際上能夠同時點擊兩個按鈕。 ;) – avakar
我可以給出的唯一建議是獲得雙擊速度的系統度量值,然後跟蹤該時間片內的左右按鈕事件,而不是任何一個事件。這很大程度上取決於消息傳遞吞吐量,所以如果時間安排非常重要,您可以選擇更接近金屬(即驅動程序)的方法,但它可能足夠滿足您的需求。 – WhozCraig