0

我正在尝试使用 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)
4

1 回答 1

1

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

于 2013-02-06T06:22:21.457 回答