这段程序在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);
}
#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);
}
memset(&lpDevMode, 0 ,sizeof(lpDevMode));
试试看
可以解决问题。