如何设置PC机的显示模式??使用STRUCT DEVMODE 和ChangeDisplaySetting API

genny 2004-09-25 11:53:56
我使用STRUCT DEVMODE 和ChangeDisplaySetting API 设置pc机的显示模式。
把DEVMODE.dmBitsPerPel 设置为24(或32)后,反馈的信息是:cnt = DISP_CHANGE_BADMODE

我当前的显卡:ATI MOBILITY RADEON 7500
当前设置:1024 x 768 真彩色(32位)60赫兹。

所以我很疑惑,为什么下面这段代码cnt = DISP_CHANGE_BADMODE呢?

下面是一个代码片断:

/////
DEVMODE devMode;

ZeroMemory(&devMode,sizeof(devMode));
devMode.dmSize = sizeof(devMode);
devMode.dmBitsPerPel = 24; //设置颜色:4 bits 表示16色,8 bits 表示256 色,
//16bits表示65537色
devMode.dmPelsHeight = 480; //设备表面高度,以像素为单位
//Specifies the height, in pixels,
//of the visible device surface.
devMode.dmPelsWidth = 640; //设备表面宽度,以像素为单位
//Specifies the width, in pixels,
// of the visible device surface

devMode.dmFields = DM_PELSHEIGHT | DM_PELSWIDTH | DM_BITSPERPEL;
// update了几个成员,就有对应的项。

DWORD cnt = ChangeDisplaySettings(&devMode,CDS_FULLSCREEN) ;



...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2004-11-05
  • 打赏
  • 举报
回复
devMode.dmBitsPerPel = 24; ???有可能显示驱动不支持,度16/32?
agua06 2004-11-05
  • 打赏
  • 举报
回复
cnt = DISP_CHANGE_BADMODE说明你的设置有更改到色板,或者较老的板子,会要求重新开机

msdn中关于这个参数的解释是这样的:

If CDS_UPDATEREGISTRY is specified and it is possible to change the graphics mode dynamically, the information is stored in the registry and DISP_CHANGE_SUCCESSFUL is returned. If it is not possible to change the graphics mode dynamically, the information is stored in the registry and DISP_CHANGE_RESTART is returned.

DISP_CHANGE_RESTART The computer must be restarted for the graphics mode to work.
leechiyang 2004-11-05
  • 打赏
  • 举报
回复
??帮你顶
genny 2004-09-29
  • 打赏
  • 举报
回复
要强制揭帖了,进来一个人接分阿

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧