在VC中修改显示器的分辩率和色彩(2)
该函数的返回值:
DISP_CHANGE_SUCCESSFUL:修改成功
DISP_CHANGE_RESTART :修改后需重新启动(在显示器设定中选择了“应用新的颜色前重新启动计算机”)
DISP_CHANGE_FAILED :修改失败
DISP_CHANGE_BADMODE:修改模式错误(比如你的显示器是单色的,但你却将之修改为256色的)
当If lpDevMode为NULL且dwflags 为0时, 显示设备使用注册表当前值。
以上是ChangeDisplaySettings常见的用法,更详细的参数说明请参见MSDN。
二、实战演练
下面举一具体的例子来说明在VC中如何修改显示器的分辨率和色彩。假设我们想将当前显示器的分辨率设为800X600,并使用24位色(色彩为224种)。
步骤1、新建一MFC AppWizard项目,本文为节约篇幅起见,在向导的第一步中选择基于对话框(Dialog Baseed)的程序。在向导的其余步骤中全部使用默认值。
步骤2、在对话框中新添加一按钮,标题设为“测试”。
步骤3、双击“测试”按钮,系统提示新建一函数OnButton1对应于该按钮的CLICK事件。OnButton1函数的具体代码如下:
void CChange_fenbianDlg::OnButton1()
{
DEVMODE lpDevMode;
lpDevMode.dmBitsPerPel=24;
lpDevMode.dmPelsWidth=800;
lpDevMode.dmPelsHeight=600;
lpDevMode.dmSize=sizeof(lpDevMode);
lpDevMode.dmFields =DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL;
LONG result;
result=ChangeDisplaySettings(&lpDevMode,0);
if (result==DISP_CHANGE_SUCCESSFUL)
{
AfxMessageBox("修改成功!");
ChangeDisplaySettings(&lpDevMode,CDS_UPDATEREGISTRY);
//使用CDS_UPDATEREGISTRY表示次修改是持久的,
//并在注册表中写入了相关的数据
}
else
{
AfxMessageBox("修改失败,恢复原有设置!");
ChangeDisplaySettings(NULL,0);
}
}
说明:上述函数中对ChangeDisplaySettings的返回值result没有作过多的分析,在实际操作中出于程序稳健的角度出发,可以对ChangeDisplaySettings的返回值作出更加详细的判断,以找出修改不成功的原因
- 上一篇:如何在VC++中使用注册表
- 下一篇:在VC++应用程序中读取文本数据