问题遇到的现象和发生背景
C#使用win32api设置命令窗体位置时失效
问题相关代码,请勿粘贴截图
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
调用方式
//Win32ApiTool.MoveWindow(intPtr, 0, 0, 1920, 1080, true);
Win32ApiTool.SetWindowPos(intPtr, (IntPtr)Win32ApiTool.HWND_TOP, 0, 0, s.Width, s.Height, Win32ApiTool.SWP_SHOWWINDOW );
运行结果及报错内容
命令窗体的大小生效了 但是位置无效
我的解答思路和尝试过的方法
尝试过
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);
也是这样的
使用下面代码获取位置 确实是离顶部和左边有距离
// 获取置顶窗口位置
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);
我想要达到的结果
目前来说资源管理器 浏览器、自己的窗体等等都可以正常使用 就唯独命令窗体无法修改显示位置