3

使用创建窗口CreateWindow(...)时,需要窗口的宽度和高度,我必须输入值 656 和 516,而不是 640 和 480,以考虑窗口边框。

我想知道是否有一种方法可以仅基于不包括边框的窗口部分来创建窗口,特别是考虑到如果不同版本的窗口具有不同大小的边框,那么当我运行它时程序可能会以不同的方式显示在所说的不同版本上

(即:使用 640 - 如果用户版本的窗口具有不同大小的边框,object.width 会将对象放置在屏幕边缘不完全)。

那么有没有一种方法可以仅基于与程序相关的屏幕部分创建一个窗口,或者至少根据GetVericalBorder()/行的函数来创建一个窗口,GetHorizontalBorder()以便我使用这些 inCreateWindow()的参数而不是任意和模糊的值,例如656和516?

4

3 回答 3

3

看看AdjustWindowRectEx。您向此函数传递一个矩形,其中包含所需的窗口客户区大小和窗口样式标志,它会计算使整个窗口有多大,以使客户区达到所需的大小。

于 2010-03-01T02:48:49.280 回答
2

您可以使用 SystemParametersInfo() API 来获取此类窗口信息。请参阅 SPI_GETBORDER 和/或 SPI_GETNONCLIENTMETRICS 参数参考 Microsoft Library

SystemParametersInfo 应该允许您考虑边框、菜单等。

于 2010-03-01T02:49:29.627 回答
0
int WINAPI GetSystemMetrics(
  __in  int nIndex
);

参考微软图书馆

于 2010-03-01T22:59:07.727 回答