让MFC(c++)编译的程序支持高DPI

让MFC(c++)编译的程序支持高DPI

问题描述:
写的程序A.exe,在笔记本开着盖子重启电脑,打开程序的时候是有界面的;但是如果点击重启之后把盖子合上之后,等重启完毕再打开A的时候,程序就打不开,没有任何的报错信息
尝试找问题:
使用Window的疑难杂症查找该程序的问题,发现选择其他的选项程序还是无法打开,只有选择以下第四个的问题的时候,系统修复完之后,程序就打开了,windows给出的解释是 对高DPI不适用,至此问题找到
在这里插入图片描述
解决方法:
1.改变系统的字体大小为100%,不要设置成125%,200%…
2.使用疑难杂症解决,系统会选择正确的配置,并保存
3.手动设置高DPI缩放,属性-兼容性-更改高DPI设置-替换高DPI缩放行为,缩放执行(应用程序)
4.使用VS设置对高DPI的支持,改为高DPI识别(但是我的VS2012和VS2015这个选项都是是否支持高DPI识别功能,我选择的是‘是’,但是打包之后的程序还是有问题,我看网上有人2015是有这个功能的,不知道是不是版本的问题)
在这里插入图片描述
5.使用程序控制该功能

#include <windows.h>
#include <winuser.h>
#include <VersionHelpers.h>
#include <ShellScalingAPI.h>
#include <stdlib.h>
#include <stdio.h>
#pragma comment(lib, "Shcore.lib")     //不加这个库的话,程序会提醒SetProcessDpiAwareness无法解析的外部符号

SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE); //在程序刚开始运行的地方加入该语句

经研究发现VS2012和2015里面均没有 SetProcessDpiAwareness这个函数,可能是因为版本太旧的原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值