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 バイ 11 インチの用紙で 600 dpi で印刷するように設定されたプリンターの物理的な高さの値は 6600 デバイス単位です。 物理ページは、ほとんどの場合、ページの印刷可能領域よりも大きく、小さくなることはありません。
PHYSICALOFFSETX
印刷デバイスの場合: 物理ページの左端から印刷可能領域の左端までの距離 (デバイス単位)。 たとえば、8.5 by-11 インチの用紙で 600 dpi で印刷するように設定されたプリンターでは、左端の 0.25 インチの用紙に印刷できない場合、物理的な水平方向のオフセットは 150 デバイス単位になります。
PHYSICALOFFSETY
印刷デバイスの場合: 物理ページの上端から印刷可能領域の上端までの距離 (デバイス単位)。 たとえば、8.5 by-11 インチの用紙で 600 dpi で印刷するように設定されたプリンターでは、用紙の一番上の 0.5 インチに印刷できない場合、垂直方向の物理的オフセットは 300 デバイス 単位になります。
VREFRESH
ディスプレイ デバイスの場合: デバイスの現在の垂直更新レート (1 秒あたりのサイクル数 (Hz)。

垂直方向の更新レート値 0 または 1 は、ディスプレイ ハードウェアの既定の更新速度を表します。 この既定のレートは、通常、ディスプレイ カードまたはコンピューターのマザーボード上のスイッチ、または ChangeDisplaySettings などの表示機能を使用しない構成プログラムによって設定されます。

SCALINGFACTORX
プリンターの x 軸の拡大縮小率。
SCALINGFACTORY
プリンターの y 軸の拡大縮小率。
BLTALIGNMENT
推奨される水平方向の描画配置。ピクセルの倍数として表されます。 最適な描画パフォーマンスを得るために、この値の倍数にウィンドウを水平方向に配置する必要があります。 0 の値は、デバイスが高速化され、任意のアラインメントが使用されることを示します。
SHADEBLENDCAPS
デバイスの網かけとブレンドの機能を示す値。 その他のコメントについては、「解説」を参照してください。
SB_CONST_ALPHA AlphaBlend 関数の blendFunction パラメーターによって参照される BLENDFUNCTION 構造体の SourceConstantAlpha メンバーを処理します。
SB_GRAD_RECT GradientFill 四角形を実行できます。
SB_GRAD_TRI GradientFill 三角形を実行できます。
SB_NONE デバイスでは、これらの機能はサポートされていません。
SB_PIXEL_ALPHA AlphaBlend でピクセルごとのアルファを処理できます。
SB_PREMULT_ALPHA AlphaBlend で事前に乗算されたアルファを処理できます。
 
RASTERCAPS
次の表に示すように、デバイスのラスター機能を示す値。
RC_BANDING バンディングのサポートが必要です。
RC_BITBLT ビットマップを転送できます。
RC_BITMAP64 64 KB を超えるビットマップをサポートできます。
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 デバイスは 1 つのスキャンラインを描画できます。
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 デバイスは、スケーリングのために文字を 2 倍にできます。
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 デバイスは GetDeviceGammaRampSetDeviceGammaRamp をサポートしています
CM_NONE デバイスは ICM をサポートしていません。
 

戻り値

戻り値は、目的の項目の値を指定します。

nIndex が BITSPIXEL で、デバイスに 15bpp または 16bpp がある場合、戻り値は 16 です。

注釈

nIndex が SHADEBLENDCAPS の場合:

  • プリンターの場合、 GetDeviceCaps は プリンターが報告するものを返します。
  • ディスプレイ デバイスでは、すべてのブレンド操作を使用できます。SB_NONE以外に、戻り値はSB_CONST_ALPHAとSB_PIXEL_ALPHAのみです。これは、これらの操作が高速化されるかどうかを示します。
複数のモニター システムでは、 hdc がデスクトップの場合、 GetDeviceCaps はプライマリ モニターの機能を返します。 他のモニターの情報が必要な場合は、 マルチモニター API または CreateDC を使用して、特定のモニターのデバイス コンテキスト (DC) の HDC を取得する必要があります。
メモ Display1 は通常、プライマリ モニターですが、常にとは限りません。
 
GetDeviceCaps には、プリンター エスケープの代わりに次の 6 つのインデックスが用意されています。
インデックス プリンターのエスケープが置き換えられました
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