2010-01-24 113 views
3

卡住了一個小問題。我使用命令CreateWindow()使用XP和VS C++在C++中創建GUI。創建方形窗口C++

我的問題是,如何讓內部可塗漆區域成爲完美的方形。當傳遞創建的窗口大小時,會扣除頂部的菜單欄,所有的邊框等等。有沒有任何實時變量可以傳入,例如,創建一個500×500的窗口應該是:

...500+BORDER,500+MENU_TOP+BORDER... 

謝謝大家

回答

4

我通常這樣做的方式是AdjustWindowRect。我發現它比其他建議的方法更簡單(它應該同樣適用,這是您的選擇)。使用它作爲這樣的:

RECT rect = {0, 0, desiredWidth, desiredHeight}; 

AdjustWindowRect(&rect, windowStyle, hasMenu); 

const int realWidth = rect.right - rect.left; 
const int realHeight = rect.bottom - rect.top; 

又通realWidth & realHeightCreateWindow

顧名思義,該函數將根據您的窗口樣式和菜單使用來調整窗口,以便客戶端區域符合您所需的大小。

+0

很好,謝謝! – Ljdawson 2010-01-25 20:32:35

+0

沒問題:3 – GManNickG 2010-01-25 20:42:28

0

,你可以找到所有相關的大小(窗口framewidth,菜單高度等)在這裏:GetSystemMetrics()。使用這些值,您應該能夠創建一個完美的方形窗口

0

您可以從GetSystemMetrics() API調用中獲取所有UI度量標準。

例如,菜單將是SM_CXMENUSM_CYMENU