ユーザーが自分の Win32 ウィンドウをデスクトップの作業領域内でのみドラッグできるようにしたいと考えています。つまり、ウィンドウのどの部分もモニターの外にはみ出してはならず、ウィンドウがタスクバーに重なってもいけません。
吃音を発生させない方法でそれを行いたいと思います。WM_MOVE メッセージを処理し、MoveWindow() を呼び出して、ウィンドウが消えた場合にウィンドウの位置を変更することはできますが、MoveWindow() によって引き起こされるちらつき効果は好きではありません。
また、移動が実際に行われる前に移動先の四角形を変更することで、MoveWindow() を呼び出す必要がないように WM_MOVING を処理しようとしました。これはちらつきの問題を解決しますが、私が遭遇する別の問題は、ドラッグが発生したときにカーソルがウィンドウから離れて、カーソルがウィンドウ内にないときにユーザーがウィンドウをドラッグできるようになることです。
これらの問題に遭遇せずにウィンドウを制限するにはどうすればよいですか?