C++ 如何在VC+;中根据当前DPI设置缩放字体大小+/MFC应用程序?

C++ 如何在VC+;中根据当前DPI设置缩放字体大小+/MFC应用程序?,c++,visual-c++,mfc,dpi,C++,Visual C++,Mfc,Dpi,如何根据VC++/MFC应用程序中当前的DPI设置调整字体大小 现在,当我将DPI从100%更改为150%时,字体大小保持不变,尽管图标将根据当前DPI缩小 请通过指定DLU中的文本和控件大小来建议解决上述问题的最佳方法。。但默认情况下会发生这种情况,因此我假设您是动态生成对话框,或者是从基于内存的DLGTEMPLATE生成对话框。如果你,你(请原谅我的法语)完蛋了,因为你将不得不把DLU转换成像素,这是一个非常痛苦和乏味的过程。阅读以下知识库文章: 不要使用DPI进行字体缩放。相反,请使

如何根据VC++/MFC应用程序中当前的DPI设置调整字体大小

现在,当我将DPI从100%更改为150%时,字体大小保持不变,尽管图标将根据当前DPI缩小


请通过指定DLU中的文本和控件大小来建议解决上述问题的最佳方法。

。但默认情况下会发生这种情况,因此我假设您是动态生成对话框,或者是从基于内存的DLGTEMPLATE生成对话框。如果你,你(请原谅我的法语)完蛋了,因为你将不得不把DLU转换成像素,这是一个非常痛苦和乏味的过程。阅读以下知识库文章:


不要使用DPI进行字体缩放。相反,请使用用户在“控制面板”的“外观”部分中配置的设置


您可能还想考虑为您的应用程序配置字体大小。在Windows Vista和7中,

,OS试图从程序中隐藏DPI并在幕后进行调整。如果您想让您的程序对DPI的更改做出正确的反应,您必须遵循Microsoft的指导原则。

这很有趣-这是否意味着从/到DLU的转换现在完全不存在了?如何编写一个同时在XP和Vista/7上运行的应用程序?@Roel,如果您想要一个在XP和Vista/7上运行相同的应用程序,只需查找SetProcessDPIAware函数的地址,如果找到它,就调用它。@Roel,我认为微软这样做是因为当你改变DPI时,他们发现太多的应用程序在XP上不能很好地工作。这让那些不想努力把事情做好的人的生活变得更轻松。我不确定DLU是如何受到影响的。好的,谢谢你-我认为我对细节了解不够,无法对新方法的优点发表意见。从我粗略的阅读来看,似乎必须在WinXP上执行DLU操作,并按照您链接到的文章在Vista/7上描述的方式执行,从而有效地将工作量增加了一倍,但我想我的假设是错误的。坦白地说,如果我不必调查这件事的细节,我会是一个快乐的人;)如何在VC++应用程序中配置字体大小?@Ashish:Windows notepad.exe就是一个很好的例子,请选择“格式”菜单->字体。