質問

マウスが特定のhwndを超えているかどうかをどのように確認しますか? wm_mouseleaveとwm_mousemoveメッセージを使用して追跡しましたが、ボタンをクリックしてマウスをボタンからドラッグすると、マウスが解放されるまでwm_mouseleaveが届きません。

ボタンをクリックすると、wm_commandメッセージは次の場合にのみ送信されます。
1.マウスはもともとボタン上で落ち込んでいた
2.マウスはボタンの上にあります
3.マウスはボタンの上に放出されます

この機能を複製する必要があります。

役に立ちましたか?

解決

この機能を複製するには、電話してください SetCapture() マウスが離れても、マウスメッセージが窓に送信されるようにします。現在のマウスの位置が動いているときに読み、まだ窓の上にあるかどうかを判断できます(まだ何をしているのか100%確信がありません)。そして、マウスボタンがリリースされたら、電話をかけることができます ReleaseCapture() マウスメッセージが送信される場所を復元するには。

編集: ああ、WindowsAPI関数を使用できます WindowFromPoint() マウスがどのウィンドウが終わったかを判断します。

他のヒント

これはWindowsに組み込まれており、「マウスキャプチャ」、SetCapture(HWND)と呼ばれます。マウスが窓の外側に移動しているにもかかわらず、マウスメッセージを保証します。 wm_lbuttondownメッセージ通知でそれを呼び出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top