计算包含对话框所需的最小大小

时间:2012-01-31 20:49:19

标签: winapi dialog scroll getsystemmetrics

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

对于有和没有滚动条的水平和垂直尺寸,我需要考虑哪些GetSysMetrics?

1 个答案:

答案 0 :(得分:0)

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

来自documentation

  

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

所以,步骤是:

  1. GetClientRect()获取您的最小尺寸客户区。

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

  3. 如果需要,请对滚动条进行额外调整(GetSystemMetrics() {/ 1}}和/或SM_CXVSCROLL