当我创建一个普通的“重叠”窗口时,我想设置一个不精确的客户端大小(比如说300 x 300)。
我可以通过AdjustWindowRectEx()
函数传递所需的客户端
区域和获取我可以传递给CreateWindowEx的大小,但它说
在文档中我不应该将它用于重叠窗口
我不明白为什么。
当我通过300 x 300时,我得到306 x 326,当我收到时
WM_SIZE
,客户端大小为298 x 298,因此它太小了2个像素。
如何使用确切的给定客户端大小创建重叠窗口?
答案 0 :(得分:1)
我不知道为什么AdjustWindowRect不起作用(除非你的客户区包含一个带有一个像素边框的子窗口)。
请注意,您可以将此功能用于重叠窗口。文档说你不能使用WS_OVERLAPPED样式(我猜因为它的值为零),但你可以使用WS_OVERLAPPEDWINDOW。
作为替代方法,您可以调用GetWindowRect和GetClientRect,计算边框的宽度/高度(两个矩形的宽度/高度之间的差异),将这些添加到所需的客户端大小并设置窗口大小。我相信你可以在显示窗口之前做到这一点。
答案 1 :(得分:1)
我的错误如下:
AdjustWindowRectEx(&rect, WS_OVERLAPPEDWINDOW, WS_CLIPSIBLINGS, FALSE, WS_OVERLAPPEDWINDOW);
更改为此修复了它:
AdjustWindowRectEx(&rect, WS_OVERLAPPEDWINDOW, WS_CLIPSIBLINGS, FALSE, 0);