2011-05-14 73 views
3

我想獲得一個500x520像素的Win32對話框,但在我的.rc文件中,這些設置使我獲得了比我預期更大的窗口。如何以像素爲單位設置Win32對話框的大小?

IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 500, 520 
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX 

某處是否有比例因子?

回答

5

對話框資源中的單位是dialog units,它們通過一個相當複雜的過程通過對話框字體的尺寸標準化。您可以使用MapDialogRect()將對話框單位轉換爲屏幕像素。

GetDialogBaseUnits()的文檔中有很多更多詳細信息,但推薦的方法是致電MapDialogRect(),並讓它爲您完成艱苦的工作。

+0

是的,*理由*你不應該使用'GetDialogBaseUnits'是因爲它的計算是基於默認的系統字體,[沒有人再使用](http://blogs.msdn.com/b/michkap /archive/2008/08/14/8867856.aspx)。不幸的是,如果有問題的窗口不是對話框,您沒有太多選擇,因爲'MapDialogRect'不起作用。 – 2011-05-14 11:00:26

相關問題