显示原理理解 DEVMODE理解
来源:互联网 发布:linux下oracle创建实例 编辑:程序博客网 时间:2024/05/16 17:57
今天查找DEVMODE结构的时候找到一篇不错的文章,特转过来:
显示器所显示的内容对应于显存,在显示器上最小的单位是象素(Pixel,这里仅考虑逻辑象素),显存的最小的单位是位(Bits)。 显示器
在VC中提供了修改显示设备(如显示器、打印机等等,本文只就显示器而言)属性的函数ChangeDisplaySettings(),该函数能够按照你的需要对显示设备作出相应的修改。其函数的原型为:LONG ChangeDisplaySettings(LPDEVMODE lpDevMode,DWORD dwflags),其参数的含义如下:
lpDevMode:一个指向DEVMODE
dmSize:所用DEVMODE数据结构的大小(以Bytes为单位);
dmBitsPerPel :每象素所使用的显存位数(Bits);
dmPelsWidth :水平分辨率(点数);
dmPelsHeight Pixel height :垂直分辨率(点数);
dmDisplayFrequency :显示刷新率,以赫兹为单位;
dmFields:通常情况下,不同的显示设备(如打印机)用到的DEVMODE数据结构的内容不同,比如设定打印机时,你不会用到dmDisplayFrequency属性。所以,在你使用DEVMODE数据结构时,应向
Dwflags:表明对显示设备的修改方式。具体取值有以下几种:0 :动态改变显示设备属性;CDS_UPDATEREGISTRY:动态改变显示设备属性并修改注册表相关设置,下次启动
上述函数调用后返回值如下:DISP_CHANGE_SUCCESSFUL:修改成功;DISP_CHANGE_RESTART :修改后需重新启动(在显示器设定中选择了"应用新的颜色前重新启动计算机");DISP_CHANGE_FAILED :修改失败;DISP_CHANGE_BADMODE:修改
对于系统的显示特性编程,还有一个关键的API函数EnumDisplaySettings()用来获得当前显示驱动所支持的所有显示模式。获得当前显示模式可以使用下面的函数:
{
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(&devmode,CDS_FULLSCREEN));这里的devmode就是前面使用EnumDisplaySettings获得的。如果设置正常,返回值DISP_CHANGE_SUCCESSFUL。
- 显示原理理解 DEVMODE理解
- 显示原理理解 DEVMODE理解
- 显示原理理解 DEVMODE理解
- DEVMODE
- DEVMODE
- 形式化和理解原理
- 进一步理解触发器原理!!!!
- 理解PHP字符串原理
- 数据库索引原理理解
- 数据库索引原理理解
- 深入理解Ajax原理
- Web Service 原理理解
- 深入理解Ajax原理
- EJB理解------RMI原理
- GoAgent原理的理解
- 个人理解反射原理
- 数据库索引原理理解
- 深入理解Memcache原理
- F5调试F11无法进入DLL动态库里面LIB静态库方法
- 第七周项目4:复数模板类
- Eclipse @override报错解决
- HDU4542-小明系列故事——未知剩余系(数论)
- 设计模式之四:外观模式(Facade Pattern)
- 显示原理理解 DEVMODE理解
- this和super的用法
- python 编码问题
- java个人记录2
- IOS之启程IOS简介
- scanf家族%*的妙用
- linux chown和chmod详解
- js 正则匹配(去掉html标签)
- cocos2d-x 读取 文件