親ウィンドウに子ウィンドウがあります。 子ウィンドウをドラッグして移動すると、子ウィンドウが親境界線から外れないようにします。ここでwin32ウィンドウのドラッグ/移動の動作を変更する
は子供のコールバックで私の現在の作業コードです:
case WM_MOVE:
RECT rect = getLocalCoordinates(hWnd);
RECT rectFather;
GetWindowRect(hWndFather, &rectFather);
if (rect.left < 0)
rect.left = 0;
if (rect.top < 0)
rect.top = 0;
if (rect.bottom > rectFather.bottom - rectFather.top - 60)
rect.top = rectFather.bottom - rectFather.top - 341;
if (rect.right > rectFather.right - rectFather.left - 35)
rect.left = rectFather.right - rectFather.left - 110;
SetWindowPos(hWnd, NULL,rect.left, rect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
break;
私は欠場唯一のことは、親の国境を越えて、私の子ウィンドウをドラッグしたとき、子ウィンドウが点滅し続けていることです。
子ウィンドウが最初に境界線から外れたため、WM_MOVE
メッセージが私のSetWindowPos
をトリガーするためです。
私の質問は、どうすればこれを防ぐことができますか、マウスのドラッグイベントをオーバーライドすることができますか?
WM_WINDOWPOSCHANGINGハンドルが必要です – RbMm