C++ GetSystemMetrics(SM\u CYVIRTUALSCREEN)返回不正确的高度?

C++ GetSystemMetrics(SM\u CYVIRTUALSCREEN)返回不正确的高度?,c++,c,windows,C++,C,Windows,我试图通过GetSystemMetrics获取主监视器的宽度和高度。然而,呼吁: GetSystemMetrics(SM_CYVIRTUALSCREEN) 返回的值是1018,而不是实际的垂直分辨率,即1080 现在,我想我可能误解了医生,所以我试着打电话 SystemParametersInfo(SPI_GETWORKAREA) 看看这是否真的是一个给全屏。但是,它会按照它所描述的那样执行,并返回屏幕的工作区域(总高度-任务栏高度)。在我的例子中是1040像素(1080-40(任务

我试图通过
GetSystemMetrics
获取主监视器的宽度和高度。然而,呼吁:

GetSystemMetrics(SM_CYVIRTUALSCREEN)  
返回的值是
1018
,而不是实际的垂直分辨率,即
1080

现在,我想我可能误解了医生,所以我试着打电话

SystemParametersInfo(SPI_GETWORKAREA)  
看看这是否真的是一个给全屏。但是,它会按照它所描述的那样执行,并返回屏幕的工作区域(总高度-任务栏高度)。在我的例子中是1040像素(1080-40(任务栏高度))

所以,我有点不知所措。1018从哪里来?是什么导致它关闭了62像素

GetSystemMetrics(SM\u CYSCREEN)
应该完成这项工作

根据这一点,这相当于
GetDeviceCaps(hdcPrimaryMonitor,VERTRES)
,这可能是您真正想要的。

GetSystemMetrics(SM\u CYSCREEN)
应该完成这项工作


根据这等于
GetDeviceCaps(hdcPrimaryMonitor,VERTRES)
这可能是你真正想要的。

你有多个屏幕吗?你可以尝试
SM\u CYSCREEN
而不是
SM\u CYVIRTUALSCREEN
在这里可以正常工作。你有多个屏幕吗?你可以尝试
SM\u CYSCREEN
而不是
SM\u CYVIRTUALSCREEN
在这里正常工作。Doh!浏览MSDN时错过了这一个。我希望他们能把相关的旗帜组合在一起!多谢了,多谢!浏览MSDN时错过了这一个。我希望他们能把相关的旗帜组合在一起!非常感谢。