剑痴乎

  • 首页
  • 文章分类
    • 音视频
    • WebRTC
    • 编程之美
    • Linux
    • Windows
    • 生活点滴
    • 校园生活
  • 参考
    • API参考
    • 实用工具
    • 测试音视频
    • 文档
  • 留言板
  • 关于
剑痴乎
代码为剑,如痴如醉
  1. 首页
  2. Windows
  3. 正文

如何让MFC或其他VS编译的程序支持高DPI

2016年1月8日 757点热度 0人点赞 0条评论

如今显示器的分辨率是越来越大,2K,4K分辨率的都很常见了。在高分屏下,我们必须对DPI进行缩放,要不显示字体会很小。一般系统默认DPI缩放级别为100%。如果改成150%,200%或者其他,我们会发现部分程序界面显示错乱,这是因为这些程序没有对高DPI进行处理。在VS中编写程序时可以很容易的做到支持DPI。

第一种方法是修改程序的Mainfest,如下图,我用的是VS2015,在属性页的Mainfest Tool中进行修改。

第二种方法是使用SetProcessDpiAwareness函数:

1
2
3
HRESULT WINAPI SetProcessDpiAwareness(
  _In_ PROCESS_DPI_AWARENESS value
);

传入的参数有三个取值选择:

1
2
3
4
5
typedef enum _PROCESS_DPI_AWARENESS {
  PROCESS_DPI_UNAWARE            = 0,
  PROCESS_SYSTEM_DPI_AWARE       = 1,
  PROCESS_PER_MONITOR_DPI_AWARE  = 2
} PROCESS_DPI_AWARENESS;

对应前面VS设置中的三个选项,具体使用可以参考SetProcessDpiAwareness function

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: VC++
最后更新:2018年12月23日

Jeff Young

代码为剑,如痴如醉

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

我的其它小窝

公众号:码上Play(基本不更新,回答问题用)

近期评论
  • Jeff on WebRTC研究:BBR拥塞控制被移除了研究过了,等后面有时间简单说明下
  • xhcx on WebRTC研究:BBR拥塞控制被移除了楼主,BBR移除的原因最近有研究吗,分享一下
  • Jeff on Windows平台WebRTC编译(持续更新)M79是2019年发布的版本,不适用这篇文章。编译…
  • haige on Windows平台WebRTC编译(持续更新)我编译的m79版本,用VS2019打开会报错, F…
  • 菜菜 on libcef编译使用--使用VS2015是真的鸟
版权声明

为支持原创,创作更好的文章,未经许可,禁止任何形式的转载与抄袭,如需转载请邮件私信!本人保留所有法定权利。违者必究!

相关文章推荐
  • Visual Studio检查内存泄露方法
  • VC实现程序单实例运行
  • 使用libVLC实现的播放器:支持双击全屏
  • MFC WebBrowser控件如何实现滚动条滑动

COPYRIGHT © 2021 剑痴乎. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS