2016-12-21 17 views
0

MFCを使用してウィンドウ外に移動しているマウスの移動イベントを検出したいと思います。 OnNcMouseMove()を使用しましたが、ウィンドウ外ではなくクライアント以外の領域に移動している場合にのみマウス移動イベントを検出します。では、マウスがウィンドウの外に移動している間に検出するにはどうすればよいですか?マウスがウィンドウの外に移動しているときを検出する方法は?

+5

マウスがウィンドウを離れるときに知る必要がある場合は、[WM_MOUSELEAVE](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645615.aspx)を使用できます。ウィンドウ外でマウスの動きを継続的に監視する必要がある場合は、代わりに[SetCapture](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646262.aspx)を実行する必要があります。 – IInspectable

+0

マウスがウィンドウの外側にあるときにマウスのポイント座標を得ることは可能ですか? –

+0

マウスキャプチャを設定した場合、マウスカーソルがウィンドウ外にあっても、引き続きWM_MOUSEMOVEメッセージを受信します。特定の時刻にカーソル位置を照会する必要がある場合は、[GetCursorPos](https://msdn.microsoft.com/en-us/library/windows/desktop/ms648390.aspx)を呼び出すことができます。そしてメッセージハンドラ内にいる場合は、[GetMessagePos](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644938.aspx)を呼び出してメッセージが生成された時刻。それはあなたが達成しようとしているものに大きく依存します。 – IInspectable

答えて

0

私がしたことは、GetCursorPos()を呼び出す100msタイマーを設定しました。そのタイマー値を調整して必要に応じて高解像度にすることができますが、特定のUIの必要性には100msで十分でした。つまり、(x、y)座標をステータスバーにダンプしました。

+1

サンプリングに基づくすべてのアプローチと同様に、サンプリングポイント間で発生するイベントも考慮しません。マウスがウィンドウを離れるが、次のサンプルを照会する前にマウスに入ると、 'WM_MOUSELEAVE'メッセージに相当するものが見つかりませんでした。これは 'TrackMouseEvent'では起こりません。私はこれがOPにとって重要であるかどうかはわかりませんが、知らないうちにこの答えは塩の穀物で取られることになります。 – IInspectable

関連する問題