功能,參數,注釋,
功能
該函式把預設顯示設備的設定改變為由lpDevMode設定的圖形模式,要改變一個特定顯示設備的設定,請使用ChangeDisplaySettingsEx函式。
函式原型:LONG ChangeDisplaySettings (LPDEVMODE lpDevMode, DWORD dwflags);
參數
lpDevMode:指向一個描述轉變圖表的DEVMODE的指針。DEVMODE的dmSize參數必須依DEVMODE結構的大小、位元組進行初始化,dmDriveExtra參數必須初始化來顯示DEVMODE隨後的驅動數據的位元組數,另外還可以選用以下參數:
dmBitsPerPel每個像素的位數,dmPelsWidth螢幕寬度(像素),dmPelsHeight螢幕高度(像素),dmDisplayFlage模式標誌。
dmDisplayFrequency模式頻率。
dmposition在多顯示配置中設備的位置(適用於Windows 98、Windows NT 5.0及以後版本)。
除了設定好DEVMOD結構中諸多元素的值之外,還必須要正確地設定dmFields元素中的標誌。這些標誌表明了DEVMODE結構中哪個元素在改變顯示設定時使用了。如果在dmFields中沒有設定正確的位,那么顯示設定將不會發生變化。請設定好以下的標誌:
DM_BITSPERPEL使用dmBitsPerPel的值,DM_PELSWIDTH使用dmPelsWidth的值,
DM_PELSHEIGHT使用dmPelsHeight的值,DM_DISPLAYFLAGS使用dmDisplayFlags的值,
DM_DISPLAYFREQUENCY使用dmDisplayFrequency的值。
DM_POSITION使用fdmPosition的值(適用於Windows98、WindowsNT5.0)。
如果lpDevMode為空。那么顯示設定就使用註冊表中的所有當前值。在顯示模式動態地調整之後要想再回到預設的模式,最簡單的辦法就是把lpDevMode參數置為空,使dwFlags參數置為0。
dwflags:表明了圖形模式如何改變,它可能是如下的幾種形式中的一種:
0:表明當前螢幕的圖形模式要動態地改變。
CDS_UPDATEREGISTRY:表明當前螢幕的圖形模式會動態地變化,並且該圖形模式會更新註冊表。該模式信息存貯在用戶檔案中。
CDS_TEST:系統檢測是否要設定被請求的圖形模式。
CDS_FULLSCREEN:從本質上講該模式是暫時的。
CDS_GLOBAL:該設定保存在全局設定區域內, 因此它們會影響所有的用戶。該標誌僅在與標誌一起使用時才有效。CDS_SET_PRIMARY:該設備成為首要設備。
CDS_RESET:設定要改變,即使請求的設定與當前設定一樣。CDS_NORESET:設定保存在註冊表中,但是它不起作用,該標誌只有與CDS_UPDATEREGISTRY標誌一起使用時才有效。
指定CDS_TEST允許一個套用確定哪個圖形模式真正的有效。但並不會使系統變為那個有效的圖形模式。
如果CDS_UPDATEREGISTRY被指定並且它可能會動態地改變圖形模式。則註冊表中保存該信息並且返回DISP_CHANGE_SUCCESSFUL如果不可能使用圖形模式動態地改變,則註冊表中保存該信息並且返回DISP_CHANGE_RESTART。
Windows NT:如果指定了CDS_UPDATEREGISTRY並且在註冊表中不能保存該信息,則圖形模式不會改變,並且返回DISP_CHANGE_NOTUPDATERD。
返回值:ChangeDisplaySettings函式的返回值如下:
DISP_CHANGE_SUCCESSFUL:設備改變成功。
DISP_CHANGE_RESTART:為使圖形模式生效計算機必須重新啟動。
DISP_CHANGE_BADFLAGS:標誌的無效設定被傳送。
DISP_CHANGE_NOTUPDATED:在WindowsNT中不能把設定寫入註冊表。
DISP_CHANGE_BADPARAM:一個無效的參數被傳遞。它可以包括一個無效的標誌或標誌的組合。
DISP_CHANGE_FAILED:指定圖形模式的顯示驅動失效。
DISP_CHANGE_BADMODE:不支持圖形模式。
注釋
為了保證傳遞給ChangeDisplaySetting的DEVMODE結構是有效的,並且僅包含顯示驅動支持的值,可以使用由EnumDisplaySettings函式返回的DEVMODE。
當顯示模式被動態地改變時,WM_DISPLAYCHANGE訊息帶著如下的訊息參數傳遞給所有正在運行的套用:
wParam每像素點的新位數,LOWORD(lParam)新像素寬度,HIWORD(lParam)新像素高度。
速查:Windows NT:3.51及以上版本;Windows:95及以上版本;Windows CE:不支持;頭檔案:winuser.h;庫檔案:user32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。