マウスがコントロールを超えているかどうかを確認する方法
-
12-10-2019 - |
質問
マウスが特定のhwndを超えているかどうかをどのように確認しますか? wm_mouseleaveとwm_mousemoveメッセージを使用して追跡しましたが、ボタンをクリックしてマウスをボタンからドラッグすると、マウスが解放されるまでwm_mouseleaveが届きません。
ボタンをクリックすると、wm_commandメッセージは次の場合にのみ送信されます。
1.マウスはもともとボタン上で落ち込んでいた
2.マウスはボタンの上にあります
3.マウスはボタンの上に放出されます
この機能を複製する必要があります。
解決
この機能を複製するには、電話してください SetCapture()
マウスが離れても、マウスメッセージが窓に送信されるようにします。現在のマウスの位置が動いているときに読み、まだ窓の上にあるかどうかを判断できます(まだ何をしているのか100%確信がありません)。そして、マウスボタンがリリースされたら、電話をかけることができます ReleaseCapture()
マウスメッセージが送信される場所を復元するには。
編集: ああ、WindowsAPI関数を使用できます WindowFromPoint()
マウスがどのウィンドウが終わったかを判断します。
他のヒント
これはWindowsに組み込まれており、「マウスキャプチャ」、SetCapture(HWND)と呼ばれます。マウスが窓の外側に移動しているにもかかわらず、マウスメッセージを保証します。 wm_lbuttondownメッセージ通知でそれを呼び出します。
所属していません StackOverflow