函式功能
該函式把顯示設備在lpszDeviceName參數中定義的設定,改變為在lpDevMode參數中定義的圖形模式。
函式原型:LONG ChangeDisplaySettingsEx(LPCSTR lpszDeviceName, LPDEVMODE lpDevMode, HWND hwnd, DWORD dwflags LPVOID lParam);
參數
lpszDeviceName:指向一個以null結尾的字元串的指針,該字元串指定了一個顯示設備,該函式從該顯示設備中得到它的圖形模式的信息。
查看EnumDisplayDevice函式,可得與這些顯示設備有關的名字的更詳細的信息,lpszDeviceName參數可以為NULL(空),NULL值定義了預設的顯示設備。
lpDevMode:指向DEVMOD結構的指針,該結構描述了要經向的圖形模式dmSize元素,必須以位元組為單位,初始化為DEVMODE結構的尺寸,可以使用DEVMODE結構的如下元素:
dmBitsPerpel每像素位元組數,dmPelsWidth像素寬度,dmPelsHeight像素高度,
dmDisplayFlags模式標誌,dmDisplayFrequency模式頻率,
dmPosition:Windows98和WindowsNT5.0以後版本,在多顯示配置下的設備位置。
為了設定前面的DEVMODE元素,必須在dmFields元素中設定適當的標誌,這些標誌表明DEVMODE結構的哪些元素是用來改變顯示設定,如果在dmFields中沒有設定適當的位,則顯示設備不會被改變。
設備如下的一個或多個標誌:
DM_BITSPERPEL:使用dmBitsPerPel值,DM_PELSWIDTH:使用dmPelsWidth值。
DM_PELSHEIGHT:使用dmPelsHeight值,DM_DISPLAYFLAGS:使用dmDisplayFlags值。
DM_DISPLAYFREQUENCY:使用dmDisplayFrequency值。
DM_POSITION:Windows98, Windows NT 5.0和以後版本,使用dmPosition值。
如果lpDevMode為NULL,使用註冊表中的所有當前值來進行顯示設定,在一個動態模式改變之後恢復預設模式的最簡單的辦法是把lpDevMode設為NULL和把dwFlags參數置為0。
hwnd:必須為NULL。
dwflags:表明圖形模式如何改變,dwflags可取如下值之一:
0:當前螢幕的圖形模式將動態地改變。
CDS_UPDATEREGISTRY:當前螢幕的圖形模式將動態地改變並且在註冊表中圖形模式將會更新,模式信息存儲在USER描述檔案中。
CDS_TEST:如果請求的圖形模要被設定,則系統進行測試,CDS_FULLSCREEN從本質上講這種模式是暫時的。(對於Windows NT:如果改變到另一個桌面,或從另一個桌面改變,那么該模式將不被重置)。
CDS_GLOBAL:這些設定將保存在全局設定區內,因此它們對所有用戶都有作用,該標誌只有與CDS_UPDATEREGISTRY標誌一起設定時才有效。
CDS_SET_PRIMARY:該設備將成為原始設備。
CDS_RESET:即使請求設定與當前設定相同,也會改變設定。
CDS_SETRECT:在WM_DISPLAYCHANGE訊息中指定的傳送到所有應用程式的lParam訊息參數,被當作RECT結構的指針,該結構在一個多螢幕環境中定義了顯示設備的位置。如果iParam參數為NULL,意味著顯示設備將從多螢幕環境中分離。
CDS_NOREST:設定保存在註冊表中,但不起作用,該標誌只有和CDS_UPDATEREGISTRY標誌一起指定時才有效。
指定CDS_TEST能讓一個應用程式確定哪一種圖形模式真正有效而不導致系統改變到那種圖形模式如果指定了CDS_UPDATEREGISTRY並且可能動態改變圖形模式,則這些信息存儲在註冊表中並返回DISP_CHANGE_SUCCESSFUL,如果不能動態改變圖形模式,則信息存儲在註冊表中並返回DISP_CHANGE_RESTART。
Windows:如果指定CDS_UPDATEREGISTRY,並且信息不能保存在註冊表中,那么圖形模式不會改變,並返回DISP_CHANGE_NOTUPDATED。
lParam:必須為空。
返回值:ChabngeDisplaySettingEx函式返回如下一值:
DISP_CHANGE_SUCCESSRJL:設定改變成功。
DISP_CHANGE_RESTART:為了圖形模式正確地運行,計算機必須重新啟動。
DISP_CHANGE_BADFLAGS:傳送了一個無效的標誌集。
DISP_CHANGE_NOTUPDATED:Windows NT不能把設定寫入註冊表。
DISP_CHANGE_BADPARAM:傳送了一個無效參數,包括一個無效標誌或幾個無效標誌的組合。
DISP_CHANGE_FAILED:指定圖形模式顯示驅動失效。
DISP_CHANGE_BADMODE:不支持該圖形模式。
注釋:為了保證傳送給ChangeDisplaySettingEx函式的DEVMODE結構是有效的,並且僅包含顯示驅動支持的值,請使用EnumDisplaySetting函式返回的DEVMODE結構。
當顯示模式動態改變時,WM_DISPLAYCHAGE訊息帶著如下的訊息參數傳送給所有正在運行的應用程式:
wParam像素的新位數,LOWORD(lParam)新像素寬度;HIWORD(iParam)新像素高度。
速查:Windows NT:5.0及以上版本;Windows:98及以上版本;Windows CE:不支持;頭檔案:winuser.h;庫檔案:user32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。