我想计算包含对话框的垂直和水平的最小尺寸。 我使用GetClientRect来确定宽度和高度。然后,对于需要垂直滚动条的宽度,我添加了GetSystemMetrics(SM_CXVSCROLL)+ GetSystemMetrics(SM_CXSIZEFRAME),但我似乎只有几个像素。
对于有和没有滚动条的水平和垂直尺寸,我需要考虑哪些GetSysMetrics?
答案 0 :(得分:0)
您需要考虑窗口边框和其他非客户区域空间。最简单的方法是使用AdjustWindowRect()
或AdjustWindowRectEx()
。但是,您仍然需要自己处理滚动条:
AdjustWindowRectEx函数不考虑WS_VSCROLL或WS_HSCROLL样式。要考虑滚动条,请使用SM_CXVSCROLL或SM_CYHSCROLL调用GetSystemMetrics函数。
所以,步骤是:
GetClientRect()
获取您的最小尺寸客户区。
AdjustWindowRectEx()
根据您的窗口样式将客户端大小转换为窗口大小。
如果需要,请对滚动条进行额外调整(GetSystemMetrics()
{/ 1}}和/或SM_CXVSCROLL
。