3

SetWindowPos を使用して、ウィンドウの位置を適切に設定していますが、うまく機能しています。

私が持っている唯一の問題は、移動しているウィンドウが最大化されている場合、移動して適切なサイズになることですが、それでも最大化された状態にあると信じて、「復元」を表示し続けます" ボタン。

SetWindowPos が呼び出されたら、そのウィンドウに最大化ボタンを置き換えるように指示する方法はありますか?

また、注意: これらのウィンドウは必ずしも Windows フォーム ウィンドウではなく、Explorer、Chrome、Firefox、メモ帳などのアプリケーションである可能性があります。

SetWindowPos への呼び出しは次のとおりです。

PInvokeMethods.SetWindowPos( hwnd, 0, position.Left + x, position.Top + y, position.Width, position.Height, PInvokeMethods.SWP_NoZOrder | PInvokeMethods.SWP_NoActivate);

4

3 に答える 3

5

1回の呼び出しで状態と位置を設定する場合は、SetWindowPlacementAPIがあります。

まず最初に、構造体に現在の値を入力GetWindowPlacementするために呼び出します。WINDOWPLACEMENT次に、showCmdrcNormalPositionメンバーを変更します。次に、変更した構造体をで起動しますSetWindowPlacement

于 2013-01-10T16:51:04.357 に答える
3

たぶん、あなたは位置を変えようとする前ShowWindowに電話をかけることを試みることができます。SW_SHOWNORMAL

于 2013-01-10T16:05:02.463 に答える
0

SetWindowPos は、ウィンドウの状態を変更しません (その位置のみ)。

代わりに SetWindowPlacement を使用し、SHowCmd メンバーを SW_SHOWMAXIMIZED に設定してWindowPlacement 構造 ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms632611(v=vs.85).aspx ) を満たすようにしてください。

于 2013-01-10T20:41:55.970 に答える