GetDeviceCaps函式可以访问使用设备描述表的设备数据,应用程式指定相应设备描述表的句柄和说明该函式访问数据类型的索引来访问这些数据。
基本介绍
- 中文名:GetDeviceCaps
- 函式原型:int GetDeviceCaps
- 函式功能:获得指定设备的性能信息
- 函式返回值:整型,获得指定类型的值
- 函式来源:WINAPI,MSDN
简介
DirectX介绍:
函式功能:获取指定设备的性能参数该方法将所取得的硬体设备信息保存到一个D3DCAPS9结构中。
函式原型:int GetDeviceCaps(HDC hdc, int nlndex);
函式返回值:int, 设备相关信息的尺寸大小
Directx 声明:
GetDeviceCaps(
UINT Adapter,
D3DDEVTYPE DeviceType
D3DCAPS8*pCaps
)
int GetDeviceCapsint GetDeviceCaps( HDC hdc, int nIndex);
nIndex得值参看wingdi.h.包含有(DRIVERVERSION/TECHNOLOGY/HORZSIZE/VERTSIZE等,头档案中有相应的解释)
说明
根据指定设备场景代表的设备的功能返回信息
参数 | 类型及说明 |
hdc | Long,要查询其设备的信息的设备场景 |
nIndex | Long,根据GetDeviceCaps索引表所示常数确定返回信息的类型 |
C++参数
1、hdc:设备上下文环境的句柄。
2、nIndex:指定返回项,该参数取下列一值。(C++)
DRIVERVERSION:设备驱动程式版本。
TECHNOLOGY:设备技术,它可以是下列一值:
DT_PLOTTER:矢量绘图仪;DT_RASDISPLAY:光栅显示器;
DT_RASPRINTER:光栅印表机;DT_RASCAMERA:光栅照相机;
DT_CHARSTREAM:字元流;DT_METAFILE:图元档案;
DT_DISPFILE:显示器档案。
如果hdc参数指定图元档案的设备上下文环境,则设备技术就是给CreateEnhMetaFile函式的引用设备,使用GetObjectType函式可以确定它是否是一增强元档案设备上下文环境。
HORZSIZE:物理萤幕的宽度(毫米);VERTSIZE:物理萤幕的高度(毫米);HORZRES:萤幕的宽度(像素);
VERTRES:萤幕的高度(光栅线);
LOGPIXELSX:沿萤幕宽度每逻辑英寸的像素数,在多显示器系统中,该值对所显示器相同;
LOGPIXELSY:沿萤幕高度每逻辑英寸的像素数,在多显示器系统中,该值对所显示器相同;
BITSPIXEL:像素相连颜色位数;PLANES:颜色位面数;NUMBRUSHES:设备指定画刷数;
NUMPENS:设备指定笔数;NUMFONTS:设备指定字型数;
NUMCOLORS:设备颜色表的入口数,如果设备的色深不超过8位像素。对于超过色深的设备返回-1;
ASPECTX:用于画线的设备像素的相对宽度;ASPECTY:用于画线的设备像素的相对高度;
ASPECTXY:用于画线的设备像素的对角线宽度;PDEVLCESIZE:保留;
CLIDCAPS:显示设备支持剪下性能的标誌。如果设备可剪下为一个长方形,则为1,否则为0;
SIZEPALETTE:系统调色板中的入口数目,只有在设备驱动器在RASTERCAPS索引中设定RC PALETFE位时该索引值才是有效的。且该索引值只能用于16位Windows的驱动器;
NUMRESERVED:系统调色板中保留的入口数目,只有在设备驱动器在RASTERLAP索引中设定RC PALETFE位时,该索引值才是有效的且该索引值只有能于16位的Windows驱动器;
COLORRES:实际位像的实际设备颜色,只有设备驱动器在RASTERLAP索引中设定RCPALETFE位时,该索引值才是有效的且该索引值只能用于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列印纸上设定为的印表机,不能在超出上边的地方打处,且有一个设备单位的物理位移;
VREFRESH:Windows NT:对于显示设备。设备的当前垂直刷新率以每秒中的循环次数为单位0或1刷新率代表显示硬体的预设刷新率,此预设刷新率通常通过设定显示卡或主机板的跳线来改变,或通过一个不使用Win32显示函式比如ChangeDisplay Setting的一个配置程式来设定;
DESKTOPHORZRES:Windows NT:可视桌面的以像素为单位的宽度。如果设备支持一个可视桌面或双重显示则此值可能大于VERTRES;
SCALINGFACTORX:印表机x轴的比例係数;SCALINGFACTORY:印表机y轴的比例係数。
BLTALIGNMENT:在Windows NT中作为像素倍数的水平绘图调整,对于最好的绘图操作,视窗绘图应该是水平调整到此值的倍数。0显示设备为加速的,且可用任何调整。
SHADEBLENDCAPS:在Windows 98、Windows NT 5.0和以后版本中此值显示设备的阴影和混合特性。
SB_CONST_ALPHA:处理BLENDFUNCTION结构中的Source constantAlpha元素,并通过AlphaBlend数中的blendFunction参数来指定;
SB_GRAD_RECT:进行Gradientfill矩形填充的能力。SB_GRAD_TRI;进行Gradientfill三角形填充的能力;
SB_NONE:设备不支持这些特性中的任何一个。SB_PIXEL_ALPHA:处理AlphaBlond中每一个像素Alphx;
SB_PREMULT_ALPHA:在Alphablend中对alpha进行预乘;
RASTERCAPS:设备所支持的光栅性能,可以是下列值的某种组合;
RC_BANDING:需要联合支持。RC_BITBLT:支持传送点阵图。
RC_BITMAP64:支持大于64K的点阵图。RC_DI_BITMAP:支持SetDIBits和GetDIBits函式。
RC_DIBTODEV:支持SetDIBits To Device函式;RC_FLOODFILL:支持连续填充
RC_GDI20_OUTPUT:支持16位Windows 2.0特徵;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:不支持用位快传递来滚动,注意这可能事与愿违。
C#参数
以上为C++部分参数,下面提供在C#中部分参数的具体值
所有类型均声明为Int或者INT32即可
DRIVERVERSION = 0
TECHNOLOGY = 2
HORZSIZE = 4
VERTSIZE = 6
HORZRES = 8
VERTRES = 10
BITSPIXEL = 12
PLANES = 14
NUMBRUSHES = 16
NUMPENS = 18
NUMMARKERS = 20
NUMFONTS = 22
NUMCOLORS = 24
PDEVICESIZE = 26
CURVECAPS = 28
LINECAPS = 30
POLYGONALCAPS = 32
TEXTCAPS = 34
CLIPCAPS = 36
RASTERCAPS = 38
ASPECTX = 40
ASPECTY = 42
ASPECTXY = 44
SHADEBLENDCAPS = 45
LOGPIXELSX = 88
LOGPIXELSY = 90
SIZEPALETTE = 104
NUMRESERVED = 106
COLORRES = 108
PHYSICALWIDTH = 110
PHYSICALHEIGHT = 111
PHYSICALOFFSETX = 112
PHYSICALOFFSETY = 113
SCALINGFACTORX = 114
SCALINGFACTORY = 115
VREFRESH = 116
DESKTOPVERTRES = 117
DESKTOPHORZRES = 118
BLTALIGNMENT = 119
返回值:返回值指定所需项目的值。
注释
GetDeviceCaps提供下列六个索引以代替印表机消失。
PHYSICALWIDTH GETPHYSPAGESIZE; PHYSICALHEIGHT GETPHYSPAGESIZE
PHYSICALOFFSETX GETPRINTINGOFFSET;
PHYSICALOFFSETY GETPHYSICALOFFSET;
SCALINGFACTORX GETSCALINGFACTOR;
SCALINGFACTORY GETSCALINGFACTOR;
Windows CE:Windows CE不支持nIndex参数取下列值:
VREFRESH; DESKTOPHORZRES; DESKTOPVERTRES;BLTALIGNMENT
Windows CE 1.0不支持nIndex参数取下列值:
PHYSICALWIDTH; PHYSICALHEIGHT; PHYSICALOFFSETX; PHYSICALOFFSETY
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头档案:wingdi.h;库档案:gdi32.lib。
补充
GetDeviceCaps(HORZSIZE)
HORZSIZE 以毫米为单位的显示宽度
VERTSIZE 以毫米为单位的显示高度
HORZRES 以像素为单位的显示宽度 0~65535
VERTRES 以像素为单位的显示高度 0~65535
LOGPIXELSX 像素/逻辑英寸(水平)
LOGPIXELSY 像素/逻辑英寸(垂直)