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
|
デバイスの網かけとブレンドの機能を示す値。 その他のコメントについては、「解説」を参照してください。
|
-
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 |
デバイスは GetDeviceGammaRamp と SetDeviceGammaRamp をサポートしています
|
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