GetDeviceCaps 函数 (wingdi.h)

GetDeviceCaps 函数检索指定设备的设备特定信息。

语法

int GetDeviceCaps(
  [in] HDC hdc,
  [in] int index
);

参数

[in] hdc

DC 的句柄。

[in] index

要返回的项。 此参数的取值可为下列值之一:

索引 含义
DRIVERVERSION
设备驱动程序版本。
技术
设备技术。 它可以是以下任意一个值。
DT_PLOTTER 矢量绘图仪
DT_RASDISPLAY 光栅显示
DT_RASPRINTER 光栅打印机
DT_RASCAMERA 光栅相机
DT_CHARSTREAM 字符流
DT_METAFILE Metafile
DT_DISPFILE 显示文件
 

如果 hdc 参数是增强型图元文件的 DC 的句柄,则设备技术是 指定到 CreateEnhMetaFile 函数的引用设备的技术。 若要确定它是否是增强型图元文件 DC,请使用 GetObjectType 函数。

HORZSIZE
物理屏幕的宽度(以毫米为单位)。
VERTSIZE
物理屏幕的高度(以毫米为单位)。
HORZRES
屏幕的宽度(以像素为单位);或 ,对于打印机,页面可打印区域的宽度(以像素为单位)。
VERTRES
屏幕的高度(以光栅线为单位);对于打印机,页面可打印区域的高度(以像素为单位)。
LOGPIXELSX
每个逻辑英寸沿屏幕宽度的像素数。 在具有多个显示监视器的系统中,此值对于所有监视器都是相同的。
LOGPIXELSY
沿屏幕高度每逻辑英寸的像素数。 在具有多个显示监视器的系统中,此值对于所有监视器都是相同的。
BITSPIXEL
每个像素的相邻颜色位数。
飞机
颜色平面数。
NUMBRUSHES
特定于设备的画笔数。
NUMPENS
特定于设备的笔数。
NUMFONTS
特定于设备的字体数。
NUMCOLORS
如果设备的颜色深度不超过每像素 8 位,则设备颜色表中的条目数。 对于颜色深度更大的设备,返回 -1。
ASPECTX
用于线条绘制的设备像素的相对宽度。
ASPECTY
用于线条绘制的设备像素的相对高度。
ASPECTXY
用于线条绘制的设备像素的对角宽度。
PDEVICESIZE
保留。
CLIPCAPS
指示设备的剪裁功能的标志。 如果设备可以剪辑为矩形,则为 1。 否则为 0。
SIZEPALETTE
系统调色板中的条目数。 仅当设备驱动程序在 RASTERCAPS 索引中设置RC_PALETTE位时,此索引才有效,并且仅当驱动程序与 16 位 Windows 兼容时才可用。
NUMRESERVED
系统调色板中的保留条目数。 仅当设备驱动程序在 RASTERCAPS 索引中设置RC_PALETTE位时,此索引才有效,并且仅当驱动程序与 16 位 Windows 兼容时才可用。
COLORRES
设备的实际颜色分辨率,以每像素位数为单位。 仅当设备驱动程序在 RASTERCAPS 索引中设置RC_PALETTE位时,此索引才有效,并且仅当驱动程序与 16 位 Windows 兼容时才可用。
PHYSICALWIDTH
对于打印设备:物理页面的宽度(以设备单位为单位)。 例如,设置为在 8.5-x11 英寸纸张上以 600 dpi 打印的打印机的物理宽度值为 5100 设备单位。 请注意,物理页面几乎总是大于页面的可打印区域,并且永远不会更小。
PHYSICALHEIGHT
对于打印设备:物理页面的高度(以设备单位为单位)。 例如,设置为在 8.5 by-11 英寸纸张上以 600 dpi 打印的打印机的物理高度值为 6600 设备单位。 请注意,物理页面几乎总是大于页面的可打印区域,并且永远不会更小。
PHYSICALOFFSETX
对于打印设备:从物理页面的左边缘到可打印区域的左边缘的距离(以设备单位为单位)。 例如,设置为在 8.5 by 11 英寸纸张上以 600 dpi 打印的打印机无法在最左侧的 0.25 英寸纸张上打印,其水平物理偏移量为 150 台设备单位。
PHYSICALOFFSETY
对于打印设备:从物理页面的上边缘到可打印区域的上边缘的距离(以设备单位为单位)。 例如,设置为在 8.5x11 英寸纸张上以 600 dpi 打印的打印机无法在最顶层 0.5 英寸的纸张上打印,其垂直物理偏移量为 300 台设备单位。
VREFRESH
对于显示设备:设备的当前垂直刷新率,以每秒周期 (Hz) 。

垂直刷新率值为 0 或 1 表示显示硬件的默认刷新率。 此默认速率通常由显示器卡或计算机主板上的开关设置,或者由不使用显示功能(如 ChangeDisplaySettings)的配置程序设置。

SCALINGFACTORX
打印机 x 轴的缩放因子。
SCALINGFACTORY
打印机的 y 轴比例系数。
BLTALIGNMENT
首选水平绘制对齐方式,表示为像素的倍数。 为了获得最佳绘制性能,窗口应水平对齐到此值的倍数。 值为零表示设备已加速,并且可以使用任何对齐方式。
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 支持大于 64 KB 的位图。
RC_DI_BITMAP 能够支持 SetDIBitsGetDIBits 函数。
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 保留;必须为零。
TC_SCROLLBLT 设备无法使用位块传输进行滚动。 请注意,此含义可能与预期相反。
 
COLORMGMTCAPS
指示设备的颜色管理功能的值。
CM_CMYK_COLOR 设备可以接受 CMYK 颜色空间 ICC 颜色配置文件。
CM_DEVICE_ICM 设备可以在设备驱动程序或设备本身上执行 ICM。
CM_GAMMA_RAMP 设备支持 GetDeviceGammaRampSetDeviceGammaRamp
CM_NONE 设备不支持 ICM。
 

返回值

返回值指定所需项的值。

nIndex 为 BITSPIXEL 且设备具有 15bpp 或 16bpp 时,返回值为 16。

注解

nIndex 为 SHADEBLENDCAPS 时:

  • 对于打印机, GetDeviceCaps 返回打印机报告的任何内容。
  • 对于显示设备,所有混合操作都可用;除了SB_NONE,唯一的返回值是SB_CONST_ALPHA和SB_PIXEL_ALPHA,这指示这些操作是否已加速。
在多监视器系统上,如果 hdc 是桌面, 则 GetDeviceCaps 将返回主监视器的功能。 如果需要其他监视器的信息,则必须使用 多监视器 APICreateDC 来获取特定监视器的设备上下文 (DC) 的 HDC。
注意 Display1 通常是主监视器,但并非总是如此。
 
GetDeviceCaps 提供以下六个索引来代替打印机转义。
索引 替换了打印机转义
PHYSICALWIDTH GETPHYSPAGESIZE
PHYSICALHEIGHT GETPHYSPAGESIZE
PHYSICALOFFSETX GETPRINTINGOFFSET
PHYSICALOFFSETY GETPHYSICALOFFSET
SCALINGFACTORX GETSCALINGFACTOR
SCALINGFACTORY GETSCALINGFACTOR
 
注意GetDeviceCaps 报告显示驱动程序提供的信息。 如果显示驱动程序拒绝报告任何信息, GetDeviceCaps 将基于固定计算计算信息。 如果显示驱动程序报告无效信息, GetDeviceCaps 将返回无效信息。 此外,如果显示驱动程序拒绝报告信息, GetDeviceCaps 可能会计算不正确的信息,因为它假设固定 DPI (96 DPI) 或固定大小 (,具体取决于显示驱动程序提供和未提供) 的信息。 遗憾的是,在 Windows Vista) 中引入的 Windows 显示驱动程序模型 (WDDM) (实现的显示驱动程序会导致 GDI 无法获取信息,因此 GetDeviceCaps 必须始终计算信息。
 

示例

有关示例,请参阅 准备打印

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wingdi.h (包括 Windows.h)
Library Gdi32.lib
DLL Gdi32.dll

另请参阅

CreateEnhMetaFile

CreateIC

设备上下文函数

设备上下文概述

DeviceCapabilities

GetDIBits

GetObjectType

SetDIBits

SetDIBitsToDevice

StretchBlt

StretchDIBits