首页 > 解决方案 > 在屏幕的一个象限中放置另一个窗口(对齐角落)

问题描述

我正在尝试将一个窗口定位到屏幕的角落。左上角、右上角等。目前我正在使用下面的 MoveWindow 功能来移动屏幕。

 [DllImport("user32.dll", SetLastError = true)]
 static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int Width, int Height, bool Repaint);

但是,这可行,我似乎找不到任何可以正确报告显示器工作区域的功能。总有这个保证金似乎没有包含在头寸中。

如果我打开一个记事本并将其对齐到左上角,左上角的位置是 -8、-8,而不是你想象的 0、0。

在此处输入图像描述

Screen.PrimaryScreen.WorkingArea

报告 0,0。

IntPtr hWndDesktop = GetDesktopWindow();
RECT desktopRectangle = new RECT();
GetWindowRect(hWndDesktop, out desktopRectangle);

报告 0,0。

Screen.PrimaryScreen.Bounds

报告 0,0。

由于所有这些函数都报告 0,0,所以每次我将窗口移动到那个位置时,在 x 和 y 位置的桌面角之间都会有一个间隙。

我似乎能想到的唯一可行的解​​决方案是最大化一个不可见的窗口,并获取它的 x、y、宽度和高度,然后使用它,但它似乎有点 hackish。我想我也可以 - 边距值(8),但我假设每个屏幕的值都不相同。

标签: c#

解决方案


推荐阅读