That's my code then, with the DisplayFlags thing and the DisplayFrequency... Same resultCode:#include "stdafx.h" #include <windows.h> #include <iostream> using namespace std; bool FindBestDisplayMode(DEVMODE &best, DWORD width, DWORD height, DWORD bpp) { DEVMODE dm = {0}; dm.dmSize = sizeof(DEVMODE); DWORD n, maxFreq = 0; bool found = false; for (n = 0; EnumDisplaySettings(NULL, n, &dm); n++) { if ((dm.dmPelsWidth == width) && (dm.dmPelsHeight == height) && (dm.dmBitsPerPel == bpp)) { if ((dm.dmFields & DM_ORIENTATION) && (dm.dmOrientation != DMDO_DEFAULT)) { // only select default orientation continue; }//if if (dm.dmDisplayFrequency > maxFreq) { maxFreq = dm.dmDisplayFrequency; best = dm; found = true; }//if }//if }//for return found; }//FindBestDisplayMode ostream& operator<<(ostream &out, const DEVMODE &dm) { return out << dm.dmPelsWidth << 'x' << dm.dmPelsHeight << 'x' << dm.dmBitsPerPel << '-' << dm.dmDisplayFrequency; }//ostream << DEVMODE int main() { const DWORD W = 800, H = 600; DEVMODE dm; bool bFound = FindBestDisplayMode(dm, W, H, 32) || FindBestDisplayMode(dm, W, H, 16); if (!bFound) { cerr << H << 'x' << W << " resolution not found." << endl; return 1; }//if dm.dmFields ^= DM_DISPLAYFLAGS; dm.dmDisplayFlags = 0; dm.dmDisplayFrequency = 0; LONG cds = ChangeDisplaySettings(&dm, CDS_FULLSCREEN); if (cds != DISP_CHANGE_SUCCESSFUL) { cerr << "Failed to change display settings to " << dm << ", ec=" << GetLastError() << endl; return 2; }//if cout << "Display now in " << dm << endl; cout << "Enjoy for the next 20 seconds..." << endl; Sleep(20 * 1000); cds = ChangeDisplaySettings(0, 0); if (cds != DISP_CHANGE_SUCCESSFUL) { cerr << "Uh-Oh, didn't change back, ec=" << GetLastError() << endl; return 3; }//if return 0; }//main