如何获取display device 的相关信息,例如分辨率。(EnumDisplaySettings)
来源:互联网 发布:教育软件行业分析 编辑:程序博客网 时间:2024/05/26 19:18
我在修改dst rectangle 的大小时,需要用到当前display device的 width 和Height,即分辨率。如果直接从driver里获取就会涉及到很多函数和变量,比较麻烦。
最后使用EnumDisplaySettings()解决了问题。
现将此函数的用法和例子整理出来:
函数原型:
BOOL EnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, LPDEVMODE lpDevMode);
参数:
lpszDeviceName:指向一个以null的结尾的字符串,该字符串指定了显示设备。此函数将获得该显示设备的图形模式信息。该参数可以为NULL。NULL值表明调用线程正运行在计算机的当前显示设备上。如果lpszDeviceName为NULL,该字符串的形式为\\.\displayx,其中x的值可以为1、2或3。对于Windows 95和Windows 98,lpszDeviceName必须为NULL。
iModeNum:表明要检索的信息类型,该值可以是一个图形模式索引,也可以是下列一值: ENUM_CURRENT_SETTINGS:检索显示设备的当前设置。 ENUM_REGISTRY_SETTINGS:检索当前存储在注册表中的显示设备的设置。 图形模式索引值从零开始,要得到一个显示设备的所有图形模式信息,可以一系列地调用EnumDisplaySettings函数,并且iModeNum显为一个非零值时,则函数返回的信息是最近一次使用iModeNum置为零调用该函数时存储的信息。 lpDevMode:DEVMODE结构的指针,该结构存储指定图形模式的信息,在调用EnumDisplaySettings之前,设置dmSize为sizeof(DEVMODE),并且以字节为单位,设置dmDriveExtra元素为接收专用驱动数据可用的附加空间。 EnumDisplaySettings函数设置如下五个DEVMODE元素的值:dmBitsPerpel、dmPelsWidth、dmPelsHeight、dmDisplayFlags、dmDisplayFrequency。 返回值:如果成功,返回非零值;如果失败,返回零。The DEVMODE data structure contains information about the initialization and environment of a printer or a display device.
typedef struct _devicemode { TCHAR dmDeviceName[CCHDEVICENAME]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; WORD dmDriverExtra; DWORD dmFields; union { struct { short dmOrientation; short dmPaperSize; short dmPaperLength; short dmPaperWidth; short dmScale; short dmCopies; short dmDefaultSource; short dmPrintQuality; }; struct { POINTL dmPosition; DWORD dmDisplayOrientation; DWORD dmDisplayFixedOutput; }; }; short dmColor; short dmDuplex; short dmYResolution; short dmTTOption; short dmCollate; TCHAR dmFormName[CCHFORMNAME]; WORD dmLogPixels; DWORD dmBitsPerPel;//颜色分辨率,in bits per pixel, of the display device (for example: 4 bits for 16 colors, 8 bits for 256 colors, or 16 bits for 65,536 colors). Display drivers use this member, for example, in the ChangeDisplaySettingsfunction. Printer drivers do not use this member. DWORD dmPelsWidth;.//显示设备surface的宽度,单位pixel DWORD dmPelsHeight;////显示设备surface的高度,单位pixel
union { DWORD dmDisplayFlags; DWORD dmNup; }; DWORD dmDisplayFrequency;#if (WINVER >= 0x0400) DWORD dmICMMethod; DWORD dmICMIntent; DWORD dmMediaType; DWORD dmDitherType; DWORD dmReserved1; DWORD dmReserved2;#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) DWORD dmPanningWidth; DWORD dmPanningHeight;#endif #endif } DEVMODE, *PDEVMODE, *LPDEVMODE;
使用举例:
DEVMODE devmode;BOOL Isgetdisplay=0; memset(&devmode,0,sizeof (devmode));devmode.dmSize = sizeof(DEVMODE);devmode.dmDriverExtra = 0;Isgetdisplay=EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode); if(!Isgetdisplay){ assert(0);}
maxWidth=devmode.dmPelsWidth;maxHeight=devmode.dmPelsHeight;
- 如何获取display device 的相关信息,例如分辨率。(EnumDisplaySettings)
- 如何获取display device 的相关信息,例如分辨率。(EnumDisplaySettings)
- Display类 提供获取屏幕尺寸和分辨率的信息
- 获取Blackberry Device相关信息
- 如何获取请求行的相关信息
- Windows下如何获取usb device信息
- Android 获取播放视频的相关 内容, 分辨率, 方向,作者信息
- 手机分辨率相关信息
- 如何获取搜索引擎的来源,以及搜索引擎的相关信息
- 如何获取系统的应用程序的相关信息
- 如何从网络上获取可靠、相关的信息
- Java 代码中如何获取JVM相关的信息?
- 如何获取android的相关信息,以及安装路径等信息的获取等
- 如何获取网卡MAC地址(或相关信息)
- 如何获取youtobe中的视频的缩略图等相关信息(调用API返回)?
- 获取网卡的相关信息
- 获取网卡的相关信息
- 获取手机的相关信息
- sql
- java 与sqlserver
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- office插件
- 陕西省体入选国足固定主场 8月15日或将迎来国足
- 如何获取display device 的相关信息,例如分辨率。(EnumDisplaySettings)
- 图片文件中隐藏一个rar压缩包的秘密
- IntelliJ IDEA快捷键(常用)
- 网站建设:怎样用自己的电脑做服务器
- 使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL
- iOS开发教程:Storyboard全解析-第一部分
- Windows server 2003下如何配置打印共享
- 无题
- 2012-5-30