我在Windows 10上使用C++编程,采用直接的 Win32 API。
我想让一个窗口出现在屏幕右上角。在做这个的时候,我发现最大化窗口的屏幕坐标为 left=-8, top=-8, right=1936, bottom=1088。
此外,当我将窗口定位在 right=1920 和 top=0 时,右侧会有约 8 个像素的空隙。我试着移动窗口,看看得到了哪些屏幕坐标。
非最大化窗口的 rect.left 可以从 -7 到 1912。
这是怎么回事?微软搞什么鬼?
没有那个讨人厌的间隙,我应该如何设置 rec.right=1913 的值,以对齐屏幕的右侧显示我的窗口呢?
然而,rect.right 为 1920 还留下了一个间隙。因此,rect.right 为 1912 将留下更多的间隙...
我需要一个可在 Vista 上运行的解决方案。在 Windows 10 之前,rect.right 应该是你预期的值 1920。
这里到底发生了什么?我快要开始乱扔刀子了!
从代码上来看,这只是 GetWindowRect 报告的结果...(请原谅我的奇怪调试函数)
::GetWindowRect (_wndo, r);
DBG("ExtRc l=`d r=`d t=`d b=`d w=`d h=`d",
r->left, r->right, r->top, r->bottom, r->right-r->left, r->bottom-r->top);
DWMWA_EXTENDED_FRAME_BOUNDS
调用DwmGetWindowAttribute
函数:https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa969515(v=vs.85).aspx - Christopher Oicles