DEVMODE lpDevMode;
EnumDisplaySettings(NULL,0,&lpDevMode);
if(lpDevMode.dmDisplayFrequency!=75 || lpDevMode.dmPelsWidth!=ScreenX || lpDevMode.dmPelsHeight!=ScreenY ||lpDevMode.dmBitsPerPel!=32)//change    to  800*600;   
{       
lpDevMode.dmBitsPerPel=32;   //色深
lpDevMode.dmPelsWidth=ScreenX;  //水平宽度
lpDevMode.dmPelsHeight=ScreenY;  //垂直高度
lpDevMode.dmDisplayFrequency=75;    //刷新频率
lpDevMode.dmSize=sizeof(DEVMODE);   //这个不知道
lpDevMode.dmFields =DM_PELSWIDTH|DM_BITSPERPEL|DM_PELSHEIGHT|DM_DISPLAYFREQUENCY;//此处设置需要改变的值
LONG result;   
result=ChangeDisplaySettings(&lpDevMode,0);  
}
修改完分辨率以后,运行一个全屏游戏,退出游戏以后分辨率又变回原来的。
网上找过很多类似的程序,都又这个问题