MFC 和 windows API 在获取屏幕分辨率方面的区别

Difference between MFC and windows API in getting screen resolution

我将 windows 屏幕分辨率设置为 1920x1080。 我有 c++ windows API 程序,需要使用 GetSystemMetrics 函数。

int x = GetSystemMetrics(SM_CXSCREEN);//retun x=1536
int y = GetSystemMetrics(SM_CYSCREEN);//retun y=864

如您所见,我从 1920x1080 获得了不同的值。 但是如果我在程序设置中使用 MFC headers (afx.h) 并使用 MFC dlls,那么 return 值 x,y 等于 windows 屏幕分辨率 (1920x1080)。

为什么两种方法不一样?

如何在不使用 MFC 的情况下在我的程序中获得正确的 windows 屏幕分辨率?

您有没有机会 运行 在 Windows 上使用 125% 缩放?因为 1,25 * 1536 = 1920 和 1,25 * 864 = 1080?我假设 MFC 不支持 DPI。

另外,请参阅this了解如何将您的应用程序标记为 DPI 感知。