我有一个WIN32 SW,其UI是在96 DPI中设计的,所以当用户将Windows DPI从96更改为120或更大时,UI将会出错。我想知道是否有API来强制我的SW以96DPI显示UI。关于DPI问题
Q
关于DPI问题
2
A
回答
2
从Windows Vista开始,缩放DPI应该会自动发生。我没有任何直接的经验,知道它有多好作品,但这里的解释如何将其关闭的页面:
http://msdn.microsoft.com/en-us/library/ms701681(VS.85).aspx
1
没有API强制您的应用以96DPI显示。 DPI是一种设备设置,无法根据应用程序进行控制。
如果您可以更改程序,您可以缩放您的UI,以便在高DPI上正常查看。您需要致电GetDeviceCaps
;更具体地说,您需要使用为LOGPIXELSX
和LOGPIXELSY
返回的数字计算X和Y比例。类似这样的:
HDC hdc;
double m_dDPIScaleX = GetDeviceCaps(hdc, LOGPIXELSX)/96.0;
double m_dDPIScaleY = GetDeviceCaps(hdc, LOGPIXELSY)/96.0;
2
您还可以添加程序兼容性键为您的应用。在注册表中这样做的地方是:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
这是每个用户设置,存在HKEY_LOCAL_MACHINE
相同的密钥,但当然这是系统设置,将需要提升权限写入。添加一个关键,像这样:
"C:\path\to\app.exe"="HIGHDPIAWARE"
将启用兼容性标志为您的程序,这将关闭DPI缩放。这是Vista +。根据文件记录,
SetProcessDPIAware也是一个选项,但请注意存在竞争条件的危险。
相关问题
- 1. 关于决议与DPI的问题?
- 2. Windows DPI相关问题
- 3. 高DPI问题
- 4. WPF DPI问题
- 5. NSImage DPI问题
- 6. WPF高DPI问题
- 7. 关于dpi和layout-swx
- 8. Visual Studio和DPI问题
- 9. 关于CSS问题
- 10. 问题关于PHP
- 11. 问题关于CCMenuItemToggle
- 12. 问题关于ASP.NET
- 13. 问题关于C++
- 14. 关于| =的问题#
- 15. 关于sas形成问题的问题
- 16. 关于JqGrid的问题和问题
- 17. 关于C#中XPathNodeIterator问题的问题#
- 18. Windows应用程序 - DPI问题
- 19. MPDF文档和图像DPI问题
- 20. DPI的Android Ice Cream Sandwich的问题
- 21. 关于Django的问题urls.py
- 22. 关于闪存问题
- 23. 关于导轨问题validates_associated
- 24. 关于geocoder gem的问题
- 25. 关于NitrousIO问题的rspec
- 26. 关于Java类的问题
- 27. 关于汇编的问题
- 28. 关于线程的问题
- 29. 关于转换的问题
- 30. 关于MathHelper.ToRadians()的问题;