GetDeviceCaps
函数功能:GetDeviceCaps 函数用于获得指定设备的一些特定信息。
API 函数原型:
注释:_In_ 说明该参数是输入的。
int GetDeviceCaps(
_In_HDC hdc,
_In_int nIndex
);
参数解析:
参数 含义
hdc 设备环境句柄
nIndex 索引值,根据这个索引值该函数获得并返回相应信息的值
nIndex 的索引值可以是以下值:
索引值 含义
DRIVERVERSION 设备驱动程序版本
TECHNOLOGY1. 设备技术,可以是下列任何一个值:
DT_PLOTTER矢量绘图仪
DT_RASDISPLAY 光栅显示器
DT_RASPRINTER 光栅打印机
DT_RASCAMERA 光栅照相机
DT_CHARSTREAM 字符流
DT_METAFILE 图元文件
DT_DISPFILE 显示器文件
2. 如果 hdc 参数是增强型图元文件的设备环境句柄,则设备技术就是给 CreateEnhMetaFile 函数的引用设备,使用 GetObjectType 函数可以确定它是否增强型图元文件的设备环境。
HORZSIZE 物理显示器的宽度(毫米)
VERTSIZE 物理显示器的高度(毫米)
HORZRES 物理显示器的宽度(像素)
VERTRES 物理显示器的高度(像素)
LOGPIXELSX 1. 沿显示器宽度每逻辑英寸的像素数
2. 在多显示器系统中,该值对所显示器相同
LOGPIXELSY 1. 沿显示器高度每逻辑英寸的像素数
2. 在多显示器系统中,该值对所显示器相同
BITSPIXEL 每个像素的色彩位数
PLANES 色彩平面的数目
NUMBRUSHES 设备指定的画刷数
NUMPENS 设备指定的画笔数
NUMFONTS 设备指定的字体数
NUMCOLORS 1. 如果设备的色彩深度不超过 8位/像素点,返回设备的色彩数值
2. 如果设备的色彩深度超过 8位/像素点,返回 1
ASPECTX 用于画线的设备像素的相对宽度
ASPECTY 用于画线的设备像素的相对高度
ASPECTXY 用于画线的设备像素的对角线宽度
PDEVICESIZE 保留
CLIPCAPS 1. 显示设备支持剪切性能的标志
2. 如果设备可剪切为一个矩形,则为 1,否则为 0
SIZEPALETTE 1. 系统调色板中的入口数目
2. 只有当设备驱动器在 RASTERCAPS 索引中设置 RC_PALETFE 标志时该索引值才是有效的
3. 该索引值只能用于 16 位 Windows 的驱动器
NUMRESERVED 1. 系统调色板中保留的入口数目
2. 只有当设备驱动器在 RASTERLAP 索引中设置 RC_PALETFE 标志时该索引值才是有效的
3. 该索引值只能用于 16 位 Windows 的驱动器
COLORRES 1. 设备的实际颜色分辨率(位/像素)
2. 只有当设备驱动器在 RASTERLAP 索引中设置 RC_PALETFE 标志时该索引值才是有效的
3. 该索引值只能用于 16 位 Windows 的驱动器
PHYSICALWIDTH 对于打印设备:设备单位的物理页面的宽度。例如一个在 8.5 * 11 纸上设置为 600dpi 的打印机的设备物理单位宽度值为 5100,注意物理页面总是大于可打印的页面面积
PHYSICALHEIGHT 对于打印设备:设备单位的物理页面的高度。例如一个在 8.5 * 11 纸上设置为 600dpi 的打印机的设备物理单位高度值为 6600,注意物理页面总是大于可打印的页面面积
PHYSICALOFFSETX 对于打印设备:从物理页面左边到打印页面左边的距离。例如一个在 8.5 * 11 纸上设置为 600dpi 的打印机,不能在超出左边 0.25 英寸的地方打印,且有一个 150 设备单位的水平物理位移
PHYSICALOFFSETY 对于打印设备:从物理页面上面到打印页面上边的距离。例如一个在 8.5 * 11 纸上设置为 600dpi 的打印机,不能在超出上边 0.5 英寸的地方打印,且有一个 300 设备单位的垂直物理位移
VREFRESH 对于显示设备:
1. 设备的当前垂直刷新率(循环次数/秒,Hz)
2. 0 或 1 代表显示硬件的默认刷新率,此默认刷新率通常通过设置显卡或主板的跳线来改变,或通过一个非显示函数(比如 ChangeDisplaySettings) 的配置程序来设置
SCALINGFACTORX 打印机 x 轴的比例系数
SCALINGFACTORY 打印机 y 轴的比例系数
BLTALIGNMENT 1. 首选的水平绘图调整(表示为像素的倍数)
2. 对于最佳性能的绘图操作,窗口水平绘图应该是调整到此值的倍数
SHADEBLENDCAPS 该值用于指定显示设备的阴影和混合性能:
SB_CONST_ALPHA 处理 BLENDFUNCTION 结构中的 SourceConstantAlpha 元素,并通过 AlphaBlend 函数中的 blendFunction 参数来指定
SB_GRAD_RECT 调用 GradientFill 函数填充矩形
SB_GRAD_TRI 调用 GradientFill 函数填充三角形
SB_NONE 设备不支持这些特性
SB_PIXEL_ALPHA 调用 AlphaBlend 函数处理每一个像素 Alpha
SB_PREMULT_ALPHA 调用 AlphaBlend 函数对 Alpha 进行预乘
RASTERCAPS 该值用于指定显示设备的光栅性能:
RC_BANDING需要联合支持
RC_BITBLT 支持传送位图
RC_BITMAP64 支持大于 64K 的位图
RC_DI_BITMAP 支持 SetDIBits 函数和 GetDIBits 函数
RC_DIBTODEV 支持 SetDIBitsToDevice 函数
RC_FLOODFILL 支持连续填充
RC_PALETTE 指定一个基于调色板的设备
RC_SCALING 支持缩放
RC_STRETCHBLT 支持 StretchBlt 函数
RC_STRETCHDIB 支持 StretchDIBits 函数
CURVECAPS 该值用于指定显示设备绘制曲线的性能:
CC_NONE 不支持绘制曲线
CC_CHORD 支持绘制弦
CC_CIRCLES 支持绘制圆
CC_ELLIPSES 支持绘制椭圆
CC_INTERIORS 支持内部填充
CC_PIE 支持绘制扇形图
CC_ROUNDRECT支持绘制圆角矩形
CC_STYLED 支持绘制带风格的边界
CC_WIDE 支持绘制宽的边界
CC_WIDESTYLED 支持绘制宽且带风格的边界
LINECAPS 该值用于指定显示设备绘制线段的性能:
LC_NONE 不支持绘制线段
LC_INTERIORS 支持内部填充
LC_MARKER 支持绘制标记符
LC_POLYLINE 支持折线
LC_POLYMARKER 支持多种标记符
LC_STYLED 支持带风格的线段
LC_WIDE 支持画宽线
LC_WIDESTYLED 支持画宽的且带风格的线段
POLYGONALCAPS 该值用于指定显示设备绘制多边形的性能:
PC_NONE 不支持绘制多边形
PC_INTERIORS 支持内部填充
PC_POLYGON 支持绘制间隔式填充多边形
PC_RECTANGLE 支持绘制矩形
PC_SCANLINE 支持绘制扫描线
PC_STYLED 支持绘制带风格的边界
PC_WIDE 支持绘制宽边界
PC_WIDESTYLED 支持绘制宽的且带风格的边界
PC_WINDPOLYGON 支持绘制折线式填充多边形
TEXTCAPS 该值用于指定显示设备绘制文本的性能:
TC_OP_CHARACTER 支持字符输出精度
TC_OP_STROKE 支持笔画输出精度
TC_CP_STROKE 支持笔画剪切精度
TC_CR_90 支持字符作 90 度旋转
TC_CR_ANY 支持字符作任意角度旋转
TC_SF_X_YINDEP 支持 x 和 y 方向的独立缩放
TC_SA_DOUBLE 支持把字符放大一倍
TC_SA_INTEGER 支持整数倍缩放
TC_SA_CONTIN 支持以任何倍数的严格缩放
TC_EA_DOUBLE 支持字符加重
TC_IA_ABLE 支持斜字体
TC_UA_ABLE 支持下划线
TC_SO_ABLE 支持删除线
TC_RA_ABLE 支持光栅字体
TC_VA_ABLE 支持矢量字体
TC_RESERVED 保留,但必须为 0
TC_SCROLLBLT 不支持用位快传递来滚动(注意,这可能事与愿违)
COLORMGMTCAPS 该值用于指定显示设备颜色管理的性能:
CM_CMYK_COLOR 设备可以接受 CMYK 色彩空间的 ICC 色彩配置文件
CM_DEVICE_ICM 设备可以在任意的设备驱动程序或设备本身执行的 ICM
CM_GAMMA_RAMP 设备支持 GetDeviceGammaRamp 函数和 SetDeviceGammaRamp 函数
CM_NONE 设备不支持 ICM
返回值:
1. 返回 nIndex 参数指定项的值;
2. 如果 nIndex 参数是 BITSPIXEL, 且设备是具有 15bpp 或 16bpp,返回值是 16。
备注:
1. 如果 nIndex 参数的值是 SHADEBLENDCAPS:
[*]对于打印设备:GetDeviceCaps 函数返回任何打印机的报告
[*]对于显示设备:所有混合操作都支持,除了 SB_NONE,唯一的返回值是 SB_CONST_ALPHA 和 SB_PIXEL_ALPHA,这表明这些操作是否被加速
2. 在多显示器系统中,如果 hdc 是台式机,GetDeviceCaps 函数返回主显示器的功能。如果你想为其他显示器的信息,则必须使用多显示器的 API 函数或调用 CreateDC 函数得到一个 hdc 指定显示器的设备环境。
注意,一般显示 1 是主显示器,但并非总是如此。
3. GetDeviceCaps 提供了以下六个索引值为打印设备转义符:
索引值 打印设备转义符
PHYSICALWIDTH GETPHYSPAGESIZE
PHYSICALHEIGHT GETPHYSPAGESIZE
PHYSICALOFFSETX GETPRINTINGOFFSET
PHYSICALOFFSETY GETPHYSICALOFFSET
SCALINGFACTORX GETSCALINGFACTOR
SCALINGFACTORY GETSCALINGFACTOR
4. 注意:
[*]GetDeviceCaps 函数获得的信息来源于显示驱动程序。
[*]如果显示驱动程序拒绝提供任何信息,GetDeviceCaps 函数则通过计算固定数据得到信息。
[*]如果显示驱动程序报告无效信息,GetDeviceCaps 函数返回无效信息。
[*]此外,如果显示驱动拒绝报告信息,GetDeviceCaps 函数可能计算不正确的信息,因为它假设是固定的 DPI(每英寸点数 96)或固定的大小(取决于显示驱动程序是否提供)。
[*]不幸的是,实现在 Windows 显示驱动程序模型(WDDM)(在 Windows Vista 中引入)的显示驱动程序导致 GDI 拿不到信息,所以 GetDeviceCaps 函数必须通过计算得到信息。
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
WinSDK good
非常好,中文的
页:
[1]