龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

在VC中修改显示器的分辩率和色彩(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
该函数的返回值: DISP_CHANGE_SUCCESSFUL:修改成功 DISP_CHANGE_RESTART :修改后需重新启动(在显示器设定中选择了“应用新的颜色前重新启动计算机”) DISP_

  该函数的返回值:

  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的返回值作出更加详细的判断,以找出修改不成功的原因

精彩图集

赞助商链接