ITPub博客

首页 > 应用开发 > IT综合 > 直接在程序中更改显示模式 (转)

直接在程序中更改显示模式 (转)

原创 IT综合 作者:bp 时间:2007-08-13 13:34:29 0 删除 编辑
直接在程序中更改显示模式 (转)[@more@]

直接在程序中更改显示模式

  可以访问系统注册表HKEY_CURRENT_CONFIGDISPLAYSETINGS来获知当前的显示分辨率和颜色数。
  但常用以下方法:
  关键的api函数是EnumDisplaySettings和ChangeDisplaySettings。前者用来获得当前显示驱动所支持的所有显示模式,而后者用来改变显示模式。如果有个程序改变了显示模式, 则windows会向所有正在运行的程序发送WM_DISPLAYCHANGE消息。获得当前显示模式可以使用下面的函数,它比访问注册表可靠。
Bool CVideoModes :: GetCurrentVideoSettings(DEVMODE *devmode)
{
HWND hwndDesktop=GetDesktopWindow();
HDC hdc=GetDC(hwndDesktop);
devmode -> dmSize =sizeof(DEVMODE);
devmode -> dmBitsPerPel=GetDeviceCaps(hdc,BITSPIXEL);
devmode -> dmPelsWidth=GetSystemMetrics(SM_CXSCREEN);
devmode -> dmPelsHeight=GetSystemMetrics(SM_CYSCREEN);
devmode -> dmFields=DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
return TRUE;
}
  下面的代码展示了如何使用EnumDisplaySettings获得当前支持的所有显示模式:
int modenum,done;
DEVMODE devmode;
done=0;
modenum=0;
do
  {
  done=!EnumDisplaySettings(NULL,modenum,&devmode);
  AddToList(&devmode);
  modenum++;
  }while (!done);
  设置显示模式的方法如下:
  rc = ChangeDisplaySettings(&devmodeCDS_FULLSCREEN));这里的devmode就
是前面使用EnumDisplaySettings获得的。
  如果设置正常,返回值DISP_CHANGE_SUCCESsfUL。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10790663/viewspace-953918/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    336
  • 访问量
    153592