#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; TEXTMETRIC tm; TCHAR str[64]; switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: hdc = BeginPaint(hwnd , &ps); GetTextMetrics(hdc , &tm); wsprintf(str , "横幅 %d px" , GetDeviceCaps(hdc , HORZRES)); TextOut(hdc , 10 , 10 , str , lstrlen(str)); wsprintf(str , "高さ %d px" , GetDeviceCaps(hdc , VERTRES)); TextOut(hdc , 10 , 10 + tm.tmHeight , str , lstrlen(str)); EndPaint(hwnd , &ps); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = WndProc; winc.cbClsExtra = winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL , IDI_APPLICATION); winc.hCursor = LoadCursor(NULL , IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = TEXT("KITTY"); if (!RegisterClass(&winc)) return -1; hwnd = CreateWindow( TEXT("KITTY") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , NULL , NULL , hInstance , NULL ); if (hwnd == NULL) return -1; while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg); return msg.wParam; }このプログラムを実行すると、デバイスの解像度を表示します
定数 | 解説 | |
---|---|---|
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 | 線の描画に使うデバイスピクセルの対角線の幅 | |
PDEVICESIZE | 予約済み | |
CLIPCAPS | デバイスのクリッピング能力を示すフラグ 長方形のクリップをサポートする場合は 1 それ以外の場合は 0 | |
SIZEPALETTE | システムパレット内のエントリ数 RASTERCAPS インデックスに RC_PALETTE ビットがセットされていること | |
NUMRESERVED | システムパレット内の予約エントリ数 RASTERCAPS インデックスに RC_PALETTE ビットがセットされていること | |
COLORRES | デバイスの実際のカラー解像度を表す ピクセル当たりのビット数 RASTERCAPS インデックスに RC_PALETTE ビットがセットされていること | |
PHYSICALWIDTH | 印刷デバイス用 物理的なページ全体の幅 (デバイス単位) | |
PHYSICALHEIGHT | 印刷デバイス用 物理的なページ全体の高さ (デバイス単位) | |
PHYSICALOFFSETX | 印刷デバイス用 物理的なページの左辺から 印刷可能領域の左辺までの距離 (デバイス単位) | |
PHYSICALOFFSETY | 印刷デバイス用 物理的なページの上辺から 印刷可能領域の上辺までの距離 (デバイス単位) | |
VREFRESH | Windows NT のみ 現在のディスプレイ出力の垂直周波数 (Hz) 0 または 1 はディスプレイのデフォルト周波数を示す | |
DESKTOPHORZRES | Windows NT のみ 仮想デスクトップの幅 ( ピクセル単位 ) | |
DESKTOPVERTRES | Windows NT のみ 仮想デスクトップの高さ (ピクセル単位) | |
BLTALIGNMENT | Windows NT のみ デバイスに適した水平方向のアラインメント 適したアラインメントが特にないときは 0 | |
RASTERCAPS | デバイスのラスタ能力を示します 次の値の組み合わせになります | |
値 | 意味 | |
RC_BANDING | バンド処理のサポートが必要 | |
RC_BITBLT | ビットマップの転送をサポート | |
RC_BITMAP64 | 64K バイトより大きいビットマップをサポート | |
RC_DI_BITMAP | SetDIBits 関数と GetDIBits 関数をサポート | |
RC_DIBTODEV | SetDIBitsToDevice 関数をサポート | |
RC_FLOODFILL | 塗りつぶしをサポート | |
RC_GDI20_OUTPUT | Windows2.0 の機能をサポート | |
RC_PALETTE | パレットベースのデバイス | |
RC_SCALING | スケーリングをサポート | |
RC_STRETCHBLT | StretchBlt 関数をサポート | |
RC_STRETCHDIB | StretchDIBits 関数をサポート | |
CURVECAPS | デバイスの曲線描画能力を示します 次の値の組み合わせになります | |
値 | 意味 | |
CC_NONE | 曲線をサポートしない | |
CC_CIRCLES | 円をサポート | |
CC_PIE | 扇形をサポート | |
CC_CHORD | 弓形をサポート | |
CC_ELLIPSES | 楕円をサポート | |
CC_WIDE | 太い線をサポート | |
CC_STYLED | スタイル付きの線をサポート | |
CC_WIDESTYLED | スタイル付きの太い線をサポート | |
CC_INTERIORS | 内部の塗りつぶしをサポート | |
CC_ROUNDRECT | 角の丸い長方形をサポート | |
LINECAPS | デバイスの直線描画能力を示します 次の値の組み合わせになります | |
値 | 意味 | |
LC_NONE | 直線をサポートしない | |
LC_POLYLINE | 折れ線をサポート | |
LC_MARKER | マーカーをサポート | |
LC_POLYMARKER | ポリマーカーをサポート | |
LC_WIDE | 太い直線をサポート | |
LC_STYLED | スタイル付きの直線をサポート | |
LC_WIDESTYLED | スタイルを持つ太い直線をサポート | |
LC_INTERIORS | 内部の塗りつぶしをサポート | |
POLYGONALCAPS | デバイスの多角形描画能力を示します 次の値の組み合わせになります | |
値 | 意味 | |
PC_NONE | 多角形をサポートしない | |
PC_POLYGON | 交互モードの塗りつぶしをサポート | |
PC_RECTANGLE | 長方形をサポート | |
PC_WINDPOLYGON | 全域モードでの塗りつぶしをサポート | |
PC_SCANLINE | 単一の走査行の描画をサポート | |
PC_WIDE | 太い線をサポート | |
PC_STYLED | スタイル付きの線をサポート | |
PC_WIDESTYLED | スタイル付きの太い線をサポート | |
PC_INTERIORS | 内部の塗りつぶしをサポート | |
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 | ビットブロック転送による スクロールをサポートしない |