1. 程式人生 > >利用windows API更改顯示器的解析度和更改雙屏的顯示模式

利用windows API更改顯示器的解析度和更改雙屏的顯示模式

//更改顯示屏的解析度(windows8)
DEVMODE dmScreenSettings;
memset(&dmScreenSettings,0,sizeof(dmScreenSettings));  
dmScreenSettings.dmSize = sizeof(dmScreenSettings); 
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dmScreenSettings); 
dmScreenSettings.dmPelsWidth = 1024; 
dmScreenSettings.dmPelsHeight = 768; 
ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN);
system("pause");


//上述方法在windows7上不太適用,針對以上做以下更改

//設定螢幕的解析度
DEVMODE dmScreenSettings;
memset(&dmScreenSettings,0,sizeof(dmScreenSettings));  
dmScreenSettings.dmSize = sizeof(dmScreenSettings); 
dmScreenSettings.dmBitsPerPel = 32;
dmScreenSettings.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL;
dmScreenSettings.dmPelsWidth = 1440; 
dmScreenSettings.dmPelsHeight = 900;  
long result = ChangeDisplaySettings(&dmScreenSettings,0);
if (result == DISP_CHANGE_SUCCESSFUL)
{
MessageBox(NULL,TEXT("解析度修改成功!"),TEXT("提示"),MB_ICONEXCLAMATION|MB_OK);
ChangeDisplaySettings(&dmScreenSettings,CDS_UPDATEREGISTRY);
}
else
{
MessageBox(NULL,TEXT("解析度修改失敗"),TEXT("提示"),MB_ICONEXCLAMATION|MB_OK);
ChangeDisplaySettings(NULL,0);
}

//更改螢幕多螢幕的顯示模式 
system ("DisplaySwitch.exe /clone");  //螢幕複製
system ("DisplaySwitch.exe /extend"); //螢幕擴充套件
system ("DisplaySwitch.exe /internal");//僅電腦螢幕
system ("DisplaySwitch.exe /external"); //僅第二螢幕