2011-07-25 24 views

回答

2

通過指定DLU中的文本和控件大小。這種情況在默認情況下會發生,所以我假設您正在動態生成對話框或從基於內存的DLGTEMPLATE生成對話框。如果你是(饒恕我的法國人)搞砸了,因爲你必須將DLU轉換爲像素,這是一個非常痛苦和乏味的過程。閱讀下面的知識庫文章:

2

不要爲字體縮放使用DPI。而應使用用戶在控制面板的「外觀」部分中配置的設置。

您可能還想考慮只爲您的應用程序設置字體大小。

+0

使字體大小可配置...................如何在VC++應用程序中完成? –

+1

@Ashish:Windows notepad.exe就是一個很好的例子,選擇Format菜單 - > Font。 –

4

在Windows Vista和7中,操作系統嘗試隱藏程序中的DPI並在幕後進行調整。如果您希望程序對DPI更改做出正確反應,則必須遵循Microsoft的標準爲Creating a DPI-Aware Application

+0

這很有趣 - 這是否意味着從/到DLU的轉換現在完全脫離了窗口?人們應該如何編寫一個可以在XP和Vista/7上運行的應用程序? – Roel

+0

@Roel,如果你想要一個在XP和Vista/7之間工作相同*的應用程序,只需查找SetProcessDPIAware函數的地址並在找到它時調用它。 –

+0

@Roel,我認爲微軟是這樣做的,因爲他們發現太多的應用程序在更改DPI時無法在XP上正常運行。對於那些不想努力做正確事情的人來說,這會讓生活更輕鬆。我不確定具體如何影響DLU。 –

相關問題