GetDeviceCaps

https://msdn.microsoft.com/ja-jp/library/ms532306.aspx https://msdn.microsoft.com/ja-jp/library/ms536834.aspx https://msdn.microsoft.com/ja-jp/library/ms536529.aspx

指定されたデバイスに関するデバイス固有の情報を取得します。

int GetDeviceCaps(
  HDC hdc,     // デバイスコンテキストのハンドル
  int nIndex   // 能力のインデックス
);

パラメータ

hdc
デバイスコンテキストのハンドルを指定します。
nIndex
取得対象の項目を指定します。次の値のいずれかを指定します。
インデックス意味
DRIVERVERSIONデバイスドライバのバージョン。
TECHNOLOGYデバイステクノロジ(タイプ)。次の値のいずれかが返ります。
 DT_PLOTTERベクタプロッタ
 DT_RASDISPLAYラスタディスプレイ
 DT_RASPRINTERラスタプリンタ
 DT_RASCAMERAラスタカメラ
 DT_CHARSTREAM文字ストリーム
 DT_METAFILEメタファイル
 DT_DISPFILEディスプレイファイル
 hdc パラメータで拡張メタファイルのデバイスコンテキストのハンドルを指定した場合、CreateEnhMetaFile 関数を呼び出したときに指定した参照デバイスのデバイステクノロジが返ります。hdc パラメータで指定したオブジェクトが拡張メタファイルのデバイスコンテキストかどうかを調べるには、GetObjectType 関数を使います。
HORZSIZEミリメートル(mm)単位の画面の物理的な幅。
VERTSIZEミリメートル(mm)単位の画面の物理的な高さ。
HORZRESピクセル単位の画面の幅。
VERTRESピクセル単位(ラスタ行数)の画面の高さ。
LOGPIXELSX画面の水平方向での、論理インチ当たりのピクセル数。マルチモニタを接続しているシステムでは、すべてのモニタでこの値が等しくなります。
LOGPIXELSY画面の垂直方向での、論理インチ当たりのピクセル数。マルチモニタを接続しているシステムでは、すべてのモニタでこの値が等しくなります。
BITSPIXELピクセルあたりのカラービットの数。
PLANESカラープレーンの数。
NUMBRUSHESデバイス固有のブラシの数。
NUMPENSデバイス固有のペンの数。
NUMFONTSデバイス固有のフォントの数。
NUMCOLORSデバイスのカラー深度が 8bpp(ピクセル当たり 8 ビット)以下の場合は、デバイスのカラーテーブル内のエントリ数を取得します。色深度が 8bpp を超える場合、-1 が返ります。
ASPECTX線の描画に使うデバイスピクセルの相対的な幅。
ASPECTY線の描画に使うデバイスピクセルの相対的な高さ。
ASPECTXY線の描画に使うデバイスピクセルの対角線の幅。
PDEVICESIZE予約済み。
CLIPCAPSデバイスのクリッピング能力を示すフラグ。デバイスが長方形のクリップをサポートする場合は 1、それ以外の場合は 0 です。
SIZEPALETTEシステムパレット内のエントリ数。デバイスドライバが、nIndex パラメータの RASTERCAPS インデックスで RC_PALETTE ビットをセットした場合にのみ、SIZEPALETTE インデックスは有効です。また、ドライバが 16 ビット版の Windows との互換性を備えている場合にのみ、利用できます。
NUMRESERVEDシステムパレット内の予約エントリ数。デバイスドライバが、nIndex パラメータの RASTERCAPS インデックスで RC_PALETTE ビットをセットした場合にのみ、NUMRESEVED インデックスは有効です。また、ドライバが 16 ビット版の Windows との互換性を備えている場合にのみ、利用できます。
COLORRESデバイスの実際の色深度を表す、ピクセル当たりのビット数。デバイスドライバが、nIndex パラメータの RASTERCAPS インデックスで RC_PALETTE ビットをセットした場合にのみ、COLORRES インデックスは有効です。また、ドライバが 16 ビット版の Windows との互換性を備えている場合にのみ、利用できます。
PHYSICALWIDTH印刷デバイス用です。ページの物理的な幅をデバイス単位で表します。たとえば、8.5"×11" の用紙に 600dpi の解像度で印刷するよう設定されているプリンタでは、物理的な幅は 5,100 デバイス単位になります(8.5×600=5,100)。ほとんどの場合、用紙の印字可能領域は用紙の物理的な幅よりも多少小さいこと、そして印字可能領域は物理的な幅を決して上回らないことに注意してください。
PHYSICALHEIGHT印刷デバイス用です。ページの物理的な高さをデバイス単位で表します。たとえば、8.5"×11" の用紙に 600dpi の解像度で印刷するよう設定されているプリンタでは、物理的な高さは 6,600 デバイス単位になります(11×600=6,600)。ほとんどの場合、用紙の印字可能領域は用紙の物理的な高さよりも多少小さいこと、そして印字可能領域は物理的な高さを決して上回らないことに注意してください。
PHYSICALOFFSETX印刷デバイス用です。物理的なページの左端から印刷可能領域の左端までの距離をデバイス単位で表します。たとえば、8.5"×11" の用紙に 600dpi の解像度で印刷するよう設定されているプリンタで、用紙の左端 0.25 インチ(6.4mm)への印字が行えない場合、水平方向の物理オフセットは 150 デバイス単位になります(0.25×600=150)。
PHYSICALOFFSETY印刷デバイス用です。物理的なページの上端から印刷可能領域の上端までの距離をデバイス単位で表します。たとえば、8.5"×11" の用紙に 600dpi の解像度で印刷するよう設定されているプリンタで、用紙の上端 0.5 インチ(12.7mm)への印字が行えない場合、水平方向の物理オフセットは 300 デバイス単位になります(0.5×600=300)。
VREFRESHWindows NT/2000:ディスプレイデバイス用です。デバイスの現在のリフレッシュレート(垂直同期周波数)を 1 秒当たりのサイクル数(Hz)で表します。

リフレッシュレートとして 0 または 1 が返された場合、現在の周波数は、ディスプレイハードウェアの既定のリフレッシュレートに等しいかどうかを意味します。通常、既定のレートを設定するには、グラフィックカードやマザーボードの DIP スイッチ、または ChangeDisplaySettings のような Win32 の表示関数を利用しない構成プログラムを使います。

SCALINGFACTORXプリンタの水平軸の倍率。
SCALINGFACTORYプリンタの垂直軸の倍率。
BLTALIGNMENTWindows NT/2000:水平方向のアラインメント(整列単位)の優先値をピクセル単位で取得します。最大の描画パフォーマンスを得るには、各ウィンドウの水平位置をこの値の整数倍に整列させるべきです。値として 0 が返った場合、このデバイスが既にアクセラレート状態になっていて、任意のアラインメントを利用できることを意味します。
SHADEBLENDCAPSWindows 98 と Windows 2000:デバイスのシェーディング(陰影)とブレンディング(混色)の能力を示す値です。
 SB_CONST_ALPHAこのデバイスは、 構造体の SourceConstantAlpha メンバを操作できます。この構造体は、AlphaBlend 関数の blendFunction パラメータで参照したものです。
 SB_GRAD_RECTこのデバイスには、GradientFill 関数を使って長方形を処理する能力があります。
 SB_GRAD_TRIこのデバイスには、GradientFill 関数を使って三角形を処理する能力があります。
 SB_NONEこのデバイスはこれらの能力をサポートしていません。
 SB_PIXEL_ALPHAこのデバイスには、AlphaBlend 関数を使って、ピクセルごとのアルファ(透明度、輝度)を操作する能力があります。
 SB_PREMULT_ALPHAこのデバイスには、AlphaBlend 関数を使って、あらかじめ倍率を設定されたアルファを操作する能力があります。
RASTERCAPSデバイスのラスタ能力を示します。次の値の組み合わせになります。
 RC_BANDINGバンド処理のサポートが必要です。バンド処理とは、1 つのページを複数のセクション(バンド)へ分割する手法のことで、処理時間は多少長くなりますが、1 つのページを作成するために必要なメモリを削減できます。
 RC_BITBLTこのデバイスには、ビットマップの転送能力があります。
 RC_BITMAP64このデバイスは、64 キロバイト(KB)より大きいビットマップをサポートしています。
 RC_DI_BITMAPこのデバイスは、SetDIBits 関数と GetDIBits 関数をサポートしています。
 RC_DIBTODEVこのデバイスは、SetDIBitsToDevice 関数をサポートしています。
 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このデバイスは、1 個のマーカーを描画できます。
 LC_POLYLINEこのデバイスは、連続直線を描画できます。
 LC_POLYMARKERこのデバイスは、複数のマーカーを描画できます。
 LC_STYLEDこのデバイスは、スタイル付きの直線を描画できます。
 LC_WIDEこのデバイスは、太い直線を描画できます。
 LC_WIDESTYLEDこのデバイスは、スタイル付きの太い直線を描画できます。
POLYGONALCAPSデバイスの多角形描画能力を示します。次の値の組み合わせになります。
 PC_NONEこのデバイスは、多角形をサポートしていません。
 PC_INTERIORSこのデバイスは、内部の描画を行えます。
 PC_POLYGONこのデバイスは、交互モードの塗りつぶしを行えます。詳細については、SetPolyFillMode の解説を参照してください。
 PC_RECTANGLEこのデバイスは、長方形を描画できます。
 PC_SCANLINEこのデバイスは、単一の走査行を描画できます。
 PC_STYLEDこのデバイスは、スタイル付きの境界線を描画できます。
 PC_WIDEこのデバイスは、太い境界線を描画できます。
 PC_WIDESTYLEDこのデバイスは、スタイル付きの太い境界線を描画できます。
 PC_WINDPOLYGONこのデバイスは、全域モードでの多角形の塗りつぶしを行えます。詳細については、SetPolyFillMode の解説を参照してください。
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このデバイスは、キャラクタの整数倍のスケーリング(n 倍角)を行えます。
 TC_SA_CONTINこのデバイスは、キャラクタの任意の倍率のスケーリングを行えます。
 TC_EA_DOUBLEこのデバイスは、2 倍の太さの文字(太字)を描画できます。
 TC_IA_ABLEこのデバイスは、イタリック体を描画できます。
 TC_UA_ABLEこのデバイスは、下線を描画できます。
 TC_SO_ABLEこのデバイスは、取り消し線を描画できます。
 TC_RA_ABLEこのデバイスは、ラスタフォントを描画できます。
 TC_VA_ABLEこのデバイスは、ベクトルフォントを描画できます。
 TC_RESERVED予約済みです。このフラグは必ず 0 になります。
 TC_SCROLLBLTこのデバイスは、ビットブロック転送(ブリット)によるスクロールを行えません。このフラグが、予期とは逆のことを意味する可能性があることに注意してください。
COLORMGMTCAPSWindows 2000:デバイスの色の管理(カラーマネジメント)能力を示します。
 CM_CMYK_COLORこのデバイスは、CMYK(シアン、マゼンタ、イエロー、ブラック)のカラースペース(色空間)に基づく ICC(International Color Consortium)のカラープロファイルを受け入れます。
 CM_DEVICE_ICMこのデバイスは、デバイスドライバまたはデバイスの側で ICM(イメージ色の管理)を実施できます。
 CM_GAMMA_RAMPこのデバイスは、 と の各関数をサポートしています。
 CM_NONEこのデバイスは、ICM をサポートしていません。

戻り値

要求した項目に対応する値が返ります。

nIndex パラメータで BITSPIXEL を指定し、デバイスの色深度が 15bpp または 16bpp の場合、16 が返ります。

解説

GetDeviceCaps は、プリンタエスケープの代わりに、次の 6 種類のインデックスを提供しています。

インデックス置き換えられたプリンタエスケープ
PHYSICALWIDTHGETPHYSPAGESIZE
PHYSICALHEIGHTGETPHYSPAGESIZE
PHYSICALOFFSETXGETPRINTINGOFFSET
PHYSICALOFFSETYGETPHYSICALOFFSET
SCALINGFACTORXGETSCALINGFACTOR
SCALINGFACTORYGETSCALINGFACTOR

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Wingdi.h 内で宣言、Windows.h をインクルード
インポートライブラリ:Gdi32.lib を使用

参照

CreateEnhMetaFile, CreateIC, DeviceCapabilities, GetDIBits, GetObjectType, SetDIBits, SetDIBitsToDevice, StretchBlt, StretchDIBits

表示: