这段程序在WINDOWS 2000下运行正常,但在XP下出错,请高手指点,如果是在XP下不妨运行一下,是在 result = ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);  这行出错的,抛出了异常,请问如何解决这个问题,谢谢!!!!   程序是这样的,如果屏幕的分辨率小于 1024×768,则设置为1024×768。程序如下:
#include <AFX.H>
#include <SHELLAPI.H>
#include <STRING.H>void ChangeSystemMetrics(int Width, int Height)
{
int   nFullWidth = GetSystemMetrics(SM_CXSCREEN);  
int   nFullHeight = GetSystemMetrics(SM_CYSCREEN);  
bool  bChanged = 0;  
if(nFullWidth < Width || nFullHeight < Height)  //change    to  1024*768;  
{  
DEVMODE  lpDevMode;  
lpDevMode.dmBitsPerPel = 16;//Change  from  24  to  16  
lpDevMode.dmPelsWidth = Width;  
lpDevMode.dmPelsHeight = Height;  
lpDevMode.dmDisplayFrequency = 85;  
lpDevMode.dmSize = sizeof(DEVMODE);  
lpDevMode.dmFields  = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_DISPLAYFREQUENCY;  
LONG  result;  
//EnumDisplaySettings(NULL,ENUM_REGISTRY_SETTINGS,&lpDevMode);  
result = ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);  //次行出错!!!

if  (result == DISP_CHANGE_SUCCESSFUL)  
{  
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,CDS_UPDATEREGISTRY,NULL);  
bChanged=1;  
}  
else  
{  
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);  


}  
}void main()
{
ChangeSystemMetrics(1024, 768);
exit(0);
}