2012-01-31 73 views
0

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

GetSysMetrics在使用和不使用滚动条时是否需要考虑横向和纵向尺寸?

回答

0

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

documentation

的AdjustWindowRectEx功能不走WS_VSCROLL或WS_HSCROLL风格的考虑。为了说明滚动条,使用SM_CXVSCROLL或SM_CYHSCROLL调用GetSystemMetrics函数。

因此,步骤是:

  1. ​​让你的最小尺寸客户区。

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

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

+0

谢谢,这就是诀窍!当然,因为添加垂直滚动条可能会导致需要水平滚动条,所以我的头部受伤。 – 2012-02-01 15:25:41