void vncDesktop::Checkmonitors() { nr_monitors=GetNrMonitors(); DEVMODE devMode; if (nr_monitors>0) { if(OSversion()==1 || OSversion()==2 || OSversion()==4 )GetPrimaryDevice(); devMode.dmSize = sizeof(DEVMODE); if(OSversion()==1 || OSversion()==2 || OSversion()==4 ) EnumDisplaySettings(mymonitor[0].device, ENUM_CURRENT_SETTINGS, &devMode); else EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devMode); mymonitor[0].offsetx=devMode.dmPosition.x; mymonitor[0].offsety=devMode.dmPosition.y; mymonitor[0].Width=devMode.dmPelsWidth; mymonitor[0].Height=devMode.dmPelsHeight; mymonitor[0].Depth=devMode.dmBitsPerPel; } if (nr_monitors>1) { GetSecondaryDevice(); devMode.dmSize = sizeof(DEVMODE); EnumDisplaySettings(mymonitor[1].device, ENUM_CURRENT_SETTINGS, &devMode); mymonitor[1].offsetx=devMode.dmPosition.x; mymonitor[1].offsety=devMode.dmPosition.y; mymonitor[1].Width=devMode.dmPelsWidth; mymonitor[1].Height=devMode.dmPelsHeight; mymonitor[1].Depth=devMode.dmBitsPerPel; } // JnZn558 if (nr_monitors>2) { GetThirdDevice(); devMode.dmSize = sizeof(DEVMODE); EnumDisplaySettings(mymonitor[2].device, ENUM_CURRENT_SETTINGS, &devMode); mymonitor[2].offsetx=devMode.dmPosition.x; mymonitor[2].offsety=devMode.dmPosition.y; mymonitor[2].Width=devMode.dmPelsWidth; mymonitor[2].Height=devMode.dmPelsHeight; mymonitor[2].Depth=devMode.dmBitsPerPel; } // /* JnZn558 mymonitor[2].offsetx=GetSystemMetrics(SM_XVIRTUALSCREEN); mymonitor[2].offsety=GetSystemMetrics(SM_YVIRTUALSCREEN); mymonitor[2].Width=GetSystemMetrics(SM_CXVIRTUALSCREEN); mymonitor[2].Height=GetSystemMetrics(SM_CYVIRTUALSCREEN); mymonitor[2].Depth=mymonitor[0].Depth;//depth primary monitor is used */ mymonitor[3].offsetx=GetSystemMetrics(SM_XVIRTUALSCREEN); mymonitor[3].offsety=GetSystemMetrics(SM_YVIRTUALSCREEN); mymonitor[3].Width=GetSystemMetrics(SM_CXVIRTUALSCREEN); mymonitor[3].Height=GetSystemMetrics(SM_CYVIRTUALSCREEN); mymonitor[3].Depth=mymonitor[0].Depth;//depth primary monitor is used }
bool Camera::changeDisplayResolution(int width, int height) { #ifdef _WIN32 DISPLAY_DEVICE dd = GetPrimaryDevice(); DEVMODE dm; dm.dmSize = sizeof(DEVMODE); if ( !EnumDisplaySettings(dd.DeviceName, ENUM_CURRENT_SETTINGS, &dm) ) { // printf("EnumDisplaySettings failed:%d\n", GetLastError()); return false; } dm.dmPelsWidth = width; dm.dmPelsHeight = height; dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; if ( fullScreen ) { // POINT p; // p.x = 0; // p.y = 0; // dm.dmPosition = p; // dm.dmDisplayFixedOutput = DM_DISPLAYFIXEDOUTPUT; // SDL_putenv("SDL_VIDEO_WINDOW_POS=0,0"); } if ( ChangeDisplaySettings(&dm, CDS_TEST) != DISP_CHANGE_SUCCESSFUL ) { // printf("\nIllegal graphics mode: %d\n", GetLastError()); return false; } geometry.setWidth(width); geometry.setHeight(height); return (ChangeDisplaySettings(&dm, 0) == DISP_CHANGE_SUCCESSFUL); #endif return true; }