0

我想计算包含对话框的垂直和水平最小尺寸。我使用 GetClientRect 来确定宽度和高度。然后对于需要垂直滚动条时的宽度,我添加了 GetSystemMetrics (SM_CXVSCROLL) + GetSystemMetrics (SM_CXSIZEFRAME) 但我似乎少了几个像素。

对于有和没有滚动条的水平和垂直维度,我需要考虑什么 GetSysMetrics?

4

1 回答 1

0

您需要考虑窗口边框和其他非客户区空间。最简单的方法是使用AdjustWindowRect()or AdjustWindowRectEx()。但是,您仍然需要自己处理滚动条:

文档中:

AdjustWindowRectEx 函数不考虑 WS_VSCROLL 或 WS_HSCROLL 样式。要考虑滚动条,请使用 SM_CXVSCROLL 或 SM_CYHSCROLL 调用 GetSystemMetrics 函数。

所以,步骤是:

  1. GetClientRect()获得您的最小客户区域。

  2. AdjustWindowRectEx()根据您的窗口样式将客户端大小转换为窗口大小。

  3. 如果需要,应用额外的调整来考虑滚动条(GetSystemMetrics()使用SM_CXVSCROLL和/或SM_CYHSCROLL)。

于 2012-02-01T06:48:23.907 回答