2008-11-19 258 views
1

我正在寫一個direct3d應用程序,並且在注意到奇怪的錯誤(例如即使關閉了鼠標指針並且沒有與自身座標相同的事物排列起來)之間發生反鋸齒之後,我發現創建窗口時,寬度和高度參數包含邊框。該程序將800x600圖形輸出渲染到相同尺寸的窗口,但由於邊界被擠壓成792x566的矩形。我增加了窗口的大小來補償,但如果系統使用其他標準XP樣式的邊框樣式,則這不起作用。 (例如經典風格)窗口邊框的寬度和高度

有沒有辦法在創建窗口之前知道邊框的寬度和高度?

回答

2

聽起來你正在尋找GetSystemMetrics函數。例如,以像素爲單位的邊框寬度由

GetSystemMetrics(SM_CXBORDER) 

ADDED返回:總大小,你將需要添加的非客戶區的各種「作品」在一起:邊界,幀大小,標題酒吧等

+0

當你創建窗口時,你將需要更多的東西,這取決於你是否有菜單/字幕/等。所以請確保你滿足這些情況以及SM_CXBORDER。 – 2008-11-19 00:20:06

3

另一種選擇是確保D3D表面與客戶矩形尺寸(GetClientRect())大小相同。然後你知道你會渲染到合適的尺寸,而不必擔心菜單,邊框等的寬度。

相關問題