#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 | ビットブロック転送による スクロールをサポートしない | |