4

これらのスタイルを使用してボーダレス ウィンドウを作成しました。WS_VISIBLE | WS_POPUP | WS_OVERLAPPED

問題は、ウィンドウを移動できないことです。私は、マウスのクリック位置を取得するようなことができることを知っており、WM_MOUSEMOVE.

しかし、このソリューションは安定していません。マウスを速く動かしすぎると、ウィンドウから外れて反応しなくなるからです。遅すぎるので、フックを設定したくありません。インターネットで検索しましたが、何もヒットしませんでした。

私が理想的にしたいのは、境界線やキャプションなしで移動できるウィンドウを作成することです。ここでは、マウスを自分で追跡する必要はありませんが、ウィンドウ全体をキャプションにするなど、Windows が自動的に追跡します。 .

4

2 に答える 2

5

マウスのクリック位置を取得するようなことができることを知っており、WM_MOUSEMOVE. しかし、この解決策は安定していません。マウスを速く動かしすぎると、ウィンドウから外れて反応しなくなるからです。

SetCaptureマウスクリックを受け取ったときに呼び出すことで修正できます。WM_MOUSEMOVEその後、マウス カーソルがウィンドウから離れた後も引き続き受信します。ユーザーがドラッグを終了してマウス カーソルを離したら、 を呼び出す必要がありますReleaseCapture

私が理想的にしたいのは、境界線やキャプションなしで移動できるウィンドウを作成することです。ここでは、マウスを自分で追跡する必要はありませんが、ウィンドウ全体をキャプションにするなど、Windows が自動的に追跡します。 .

本当にそうしたい場合は、WM_NCHITTESTメッセージに応答して を返すことができますHTCAPTION

于 2013-07-06T10:54:34.797 に答える
1

試着PostMessage(hwnd,WM_SYSCOMMAND,SC_SIZE+9,0)してくださいWM_LBUTTONDOWN

于 2013-07-06T11:00:38.670 に答える