我试图使用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)

最佳答案

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

关于c++ - ChangeDisplaySettingsEx()始终返回DISP_CHANGE_BADPARAM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14702481/

10-15 04:46