0

WinAPIC++関数を使用してモニターの表示モードを設定しようとしています。

私の問題:呼び出し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 に答える