关于动态获取系统DPI问题

1.获取系统DPI的方式有很多,但都有一个问题,获取的DPI可能是修改前的DPI

#include <iostream>
  
#include <Windows.h>
#pragma comment(lib,"Gdi32.lib")
#pragma comment(lib,"User32.lib")

int main(void) {
	//HWND hd = GetDesktopWindow();
	HWND hd1 = FindWindow(L"Progman",L"Program Manager");
	int zoom = GetDpiForWindow(hd1);
	std::cout << zoom << std::endl;
 
	//HWND _hwndProgman = FindWindow(_T("Progman"), NULL);// 桌面
	//if(!_hwndProgman)
	//	_hwndProgman = FindWindow(_T("WorkerW"), NULL);// 自定义桌面
	//if (!_hwndProgman)
	//	_hwndProgman = FindWindow(_T("Shell_TrayWnd"), NULL);// 托盘
	//return _hwndProgman;
	std::cout << GetDeviceCaps(GetDC(NULL), LOGPIXELSX) << std::endl;

	getchar();
	return 0;
}

我们使用GetDeviceCaps可以动态获取,如果是win10家庭版,那么获取还是修改前的DPI。所以我们采用GetDpiForWindow获取“Program Manager”,这也是桌面,但不是系统自带APIGetDesktopWindow(),就都能正常获取了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值