This question already has answers here:
GetSystemMetrics() returns wrong value for SM_CXSCREEN

(3个答案)


3年前关闭。




我将Windows屏幕分辨率设置为1920x1080。
我有c++ Windows API程序,需要使用GetSystemMetrics函数。
int x = GetSystemMetrics(SM_CXSCREEN);//retun x=1536
int y = GetSystemMetrics(SM_CYSCREEN);//retun y=864

如您所见,我从1920x1080获得了不同的值。
但是,如果我在程序设置中使用MFC header ( afx.h )并使用 MFC dll ,则返回值x,y等于Windows屏幕分辨率(1920x1080)。

为什么两种方法不一样?

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

最佳答案

您是否有可能在Windows上以125%的比例运行?因为1,25 * 1536 = 1920和1,25 * 864 = 1080?我假设MFC不支持DPI。

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

关于c++ - MFC和Windows API在获取屏幕分辨率方面的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40998553/

10-11 22:07
查看更多