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 中繼檔
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-by11英吋紙張上的600 dpi印表,其實體高度值為6600個裝置單位。 請注意,實體頁面幾乎一律大於頁面的可列印區域,而且永遠不會更小。
PHYSICALOFFSETX
列印裝置:從實體頁面左邊緣到可列印區域左邊緣的距離,以裝置單位為單位。 例如,印表機設定為在8.5到11英吋紙張上的600 dpi印表,無法在最左邊的0.25英吋紙張上列印,其水準實體位移為150個裝置單位。
PHYSICALOFFSETY
列印裝置:從實體頁面的上邊緣到可列印區域上邊緣的距離,以裝置單位為單位。 例如,印表機設定為在8.5-by 11英吋紙張上以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 Display Driver Model (WDDM) (中引進的顯示器驅動程式) 會導致 GDI 無法取得資訊,因此 GetDeviceCaps 必須一律計算資訊。
 

範例

如需範例,請參閱 準備列印

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 wingdi.h (包含 Windows.h)
程式庫 Gdi32.lib
Dll Gdi32.dll

另請參閱

CreateEnhMetaFile

CreateIC

裝置內容函式

裝置內容概觀

DeviceCapabilities

GetDIBits

GetObjectType

SetDIBits

SetDIBitsToDevice

StretchBlt

StretchDIBits