直接在程式中更改顯示模式 (轉)

worldblog發表於2007-12-06
直接在程式中更改顯示模式 (轉)[@more@]

直接在中更改顯示

  可以訪問登錄檔HKEY_CURRENT_CONFIGDISPLAYSETINGS來獲知當前的顯示解析度和顏色數。
  但常用以下方法:
  關鍵的是EnumDisplaySettings和ChangeDisplaySettings。前者用來獲得當前顯示所支援的所有顯示模式,而後者用來改變顯示模式。如果有個程式改變了顯示模式, 則會向所有正在執行的程式傳送WM_DISPLAYCHANGE訊息。獲得當前顯示模式可以使用下面的函式,它比訪問登錄檔可靠。
Bool CVoModes :: GetCurrentVideoSettings(DEVMODE *devmode)
{
HWND hwndDesktop=GetDesktopWindow();
HDC hdc=GetDC(hwndDesktop);
devmode -> dmSize =sizeof(DEVMODE);
devmode -> dmBitsPerPel=GetDeviceCaps(hdc,BITSPIXEL);
devmode -> dmPelsWidth=GetSystemMetrics(SM_CXSCREEN);
devmode -> dmPelsHeight=GetSystemMetrics(SM_CYSCREEN);
devmode -> dmFields=DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
return TRUE;
}
  下面的程式碼展示瞭如何使用EnumDisplaySettings獲得當前支援的所有顯示模式:
int modenum,done;
DEVMODE devmode;
done=0;
modenum=0;
do
  {
  done=!EnumDisplaySettings(NULL,modenum,&devmode);
  AddToList(&devmode);
  modenum++;
  }while (!done);
  設定顯示模式的方法如下:
  rc = ChangeDisplaySettings(&devmodeCDS_FULLSCREEN));這裡的devmode就
是前面使用EnumDisplaySettings獲得的。
  如果設定正常,返回值DISP_CHANGE_SUCCESUL。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988865/,如需轉載,請註明出處,否則將追究法律責任。

相關文章