void CIniFile::ChangeResolution(int nwidth,int nheight)//把显示器的分辨率改成nwidth, nheight
{
DEVMODE lpDevMode; //DEVMODE的数据结构描述了欲设定显示器的各类属性值
lpDevMode.dmFields=DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL|DM_DISPLAYFREQUENCY;
//dmFields向系统说明具体用到的有效数据成员
LONG result;
EnumDisplaySettings(NULL,ENUM_REGISTRY_SETTINGS,&lpDevMode);
//该函数得到显示设备的一个图形模式设备,通过对该函数一系列的调用可以得到显示设备所有的图形模式信息
lpDevMode.dmPelsWidth = nwidth ;//水平分辨率
lpDevMode.dmPelsHeight = nheight;//垂直分辨率
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);
//该函数把显示设备在lpszDeviceName参数中定义的设置,改变为在lpDevMode参数中定义的图形模式
//NULL值定义了缺省的显示设备。
if (result==DISP_CHANGE_SUCCESSFUL) //改变分辨率成功
{
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,CDS_UPDATEREGISTRY,NULL);
//使用CDS_UPDATEREGISTRY表示此次修改是持久的,并在注册表中写入了相关的数据
}
else
{
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);
}
}