ChangeDisplaySettingsEx()始终返回DISP_CHANGE_BADPARAM

时间:2013-02-05 07:46:23

标签: c++ winapi

我正在尝试使用WinAPI C ++函数设置我的监视器的显示模式。

我的问题:致电ChangeDisplaySettingsEx()始终会返回DISP_CHANGE_BADPARAM。我做错了什么?

我认为可能是我的devMode.dmDriverExtra值导致错误。我读过MSDN,devMode.dmDriverExtra的解释令人困惑。它是什么以及我如何找到监视器的dmDriverExtra?

导致下面的代码总是返回DISP_CHANGE_BADPARAM

DEVMODE devMode;
POINTL p                = {0,0};
_tcscpy(devMode.dmDeviceName, _T("\\Device\\00000072")); 
devMode.dmSpecVersion   = DM_SPECVERSION;
devMode.dmDriverVersion = 1;  // How do I determine the driver version?
devMode.dmSize          = sizeof(DEVMODE);
devMode.dmDriverExtra   = 0x5c0000; // 
devMode.dmFields        = DM_POSITION;
devMode.dmPosition      = p;

LONG res = ChangeDisplaySettingsEx(_T("\\Device\\00000072"), &devMode, mainHwnd, 0, NULL);
_tprintf(_T("%s: %d\n\n\n"), _T("\\Device\\00000072"), res); 
// The above printf always prints out "\Device\00000072: -5" (DISP_CHANGE_BADPARAM=-5)

1 个答案:

答案 0 :(得分:1)

hwnd参数记录为保留,必须为NULL。另外dmDriverExtra是一个16位值,所以0x5c0000不适合。