Winapi GetSystemMetrics vs.SystemParametersInfo

Winapi GetSystemMetrics vs.SystemParametersInfo,winapi,getsystemmetrics,Winapi,Getsystemmetrics,我需要找出屏幕的高度,以便调整对话框的大小。我正在用SM\u CYFULLSCREEN呼叫GetSystemMetrics,我得到了一个特定的号码(我的情况是1028)。根据MSDN: 获取屏幕未被遮挡部分的坐标 通过系统任务栏或应用程序桌面工具栏,调用 SystemParametersInfo函数,具有SPI\u GETWORKAREA值 我还调用了systemparameters-sinfo来查看它返回的结果,我得到了一个不同的高度数字,1050。运行spy时,没有任务栏的区域确实高度为10

我需要找出屏幕的高度,以便调整对话框的大小。我正在用
SM\u CYFULLSCREEN
呼叫
GetSystemMetrics
,我得到了一个特定的号码(我的情况是1028)。根据MSDN:

获取屏幕未被遮挡部分的坐标 通过系统任务栏或应用程序桌面工具栏,调用
SystemParametersInfo
函数,具有
SPI\u GETWORKAREA


我还调用了
systemparameters-sinfo
来查看它返回的结果,我得到了一个不同的高度数字,1050。运行spy时,没有任务栏的区域确实高度为1050。有人知道为什么会有不同的高度吗?感谢来自MSDN文档的SM\u Cy全屏:

主显示监视器上全屏窗口的客户端区域的高度,以像素为单位

相关细节以粗体显示,客户端区域是窗口的一部分,没有边框和标题栏。因此,它大大小于实际主屏幕高度。也许你想用SM_CYSCREEN来代替。SPI_GETWORKAREA返回整个窗口的可用空间、外部大小以及传递给CreateWindowEx()的大小