如何在MFC应用程序中获取系统当前的DPI?
我有一个现有的 MFC 应用程序,它在 Windows 7 中的默认 DPI (96 dpi) 下运行良好。但是当我将 DPI 增加 150% 时,UI 会变形。我已经修复了在一定级别上使用滚动条的问题,并参考了 msdn 文章。我想知道如何使用 MFC 代码获取系统的当前 DPI,以便设置对话框的高度和宽度。
请推荐!!
I have an existing MFC application which runs fine in default DPI ( 96 dpi) in Windows 7. But when I increase the DPI by 150 % the UI gets distorted. I have fixed issues using scroll bars at certain level and referred to msdn article. I am wondering how can I get the current DPI of a system using MFC code so that set the height and widht of a dialog.
Please suggest!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先,您需要获取屏幕的设备上下文。这很简单,只需调用 GetDC,如下所示:
然后询问该设备上下文的设备功能。在您的情况下,您需要沿 X 轴和 Y 轴每英寸的像素:(
请参阅 http://msdn.microsoft.com/en-us/library/dd144877(v=vs.85).aspx 了解有关 GetDeviceCaps 的详细信息)。
最后,再次释放设备上下文:
First you need to get the device context for your screen. This is easy, just call GetDC, like this:
Then you ask for the device capabilities of that device context. In your case, you need the pixels along the X- and Y-axis per inch:
(see http://msdn.microsoft.com/en-us/library/dd144877(v=vs.85).aspx for more information about GetDeviceCaps).
Finally, release the device context again:
根据 Patrick 的回答,您可能还想阅读有关编写高 DPI 感知用户界面的 Microsoft 教程:
http://msdn.microsoft.com/en-us/library/dd464659.aspx
Following on from Patrick's answer, you might also like to read this Microsoft tutorial on writing high DPI aware user interface:
http://msdn.microsoft.com/en-us/library/dd464659.aspx
下面的代码片段给了我Win7中正确的DPI
The below code snippet gave me the correct DPI in Win7