2012-01-31 69 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