まず、下手な英語で申し訳ありません:)
次に、次のコードを使用して、フォームがいつ移動/サイズ変更されているかを知ることができます:
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_WINDOWPOSCHANGING)
{
WINDOWPOS winPos = new WINDOWPOS();
winPos = (WINDOWPOS)Marshal.PtrToStructure(m.LParam, typeof(WINDOWPOS));
//Here I just need to change the values of the WINDOWPOS structure
Marshal.StructureToPtr(winPos, m.LParam, true);
}
}
WM_WINDOWPOSCHANGING メッセージは、ユーザーがウィンドウを最小化または最大化しているときにも送信されます。しかし、ユーザーが移動/サイズ変更ではなく、最大化/最小化を行っていることをどのように知ることができますか? WindowState プロパティを取得しようとしましたが、うまくいきませんでした :(
WINDOWPOS 構造体のコードは次のとおりです。
[StructLayout(LayoutKind.Sequential)]
public struct WINDOWPOS
{
public IntPtr hwnd;
public IntPtr hwndInsertAfter;
public int x;
public int y;
public int cx;
public int cy;
public int flags;
}
何か助けはありますか?