int DrawText( HDC hdc , LPTSTR lpchText , int cchText , LPRECT lprc , UINT dwDTFormat , );hdc は、デバイスコンテキストのハンドルを
#include<windows.h> #include<stdio.h> LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) { HDC hdc; PAINTSTRUCT ps; static RECT rect; static PCTSTR ctStr = TEXT("Government of the people , by the people , for the people"); switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: hdc = BeginPaint(hwnd , &ps); GetClientRect(hwnd , &rect); DrawText(hdc , ctStr , -1 , &rect , DT_CENTER | DT_WORDBREAK ); EndPaint(hwnd , &ps); return 0; } return DefWindowProc(hwnd , msg , wp , lp); } int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR pCmdLine , int nCmdShow ) { HWND hwnd; WNDCLASS winc; MSG msg; 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 0; 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 0; while (GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg); return msg.wParam; }
int DrawText( HDC hdc , LPTSTR lpchText , int cchText , LPRECT lprc , UINT uFormat , );指定された長方形に、指定された形式でフォーマットした文字列を表示します
定数 | 解説 |
---|---|
フォーマット指定 | |
DT_BOTTOM | 長方形の下辺にテキストを揃えます DT_SINGLELINE と同時に指定しなければなりません |
DT_CALCRECT | RECT 構造体で指定した長方形の幅と高さを 実際にテキストを表示するために必要な大きさに変更します テキストは描画しません |
DT_CENTER | テキストを水平方向に中央揃えで表示します |
DT_EDITCONTROL | 複数行エディットコントロールがもつ特性と同じ特性で描画します 部分的に見えている最後の行は表示しません |
DT_END_ELLIPSIS | 指定した長方形に収まるよう 必要に応じてテキストの最後を省略符号 (...) に置き換えます |
DT_PATH_ELLIPSIS | 指定した長方形に収まるよう 必要に応じてテキストの途中を省略符号 (...) に置き換えます パス名の描画に適しています |
DT_EXPANDTABS | タブ文字を展開します デフォルトのタブ間隔は 8 文字です |
DT_EXTERNALLEADING | 行の高さに、外部レディングの高さ (テキストの行間として適切な高さ) を加算します 通常、外部レディングはテキスト行の高さに加えられません |
DT_LEFT | テキストを左揃えにします |
DT_MODIFYSTRING | lpString パラメータが指すバッファに 表示された文字列を格納します DT_END_ELLIPSIS または DT_PATH_ELLIPSIS フラグを 指定したときにしか意味をもちません |
DT_NOCLIP | クリッピングをしません。描画が多少速くなります |
DT_NOPREFIX | プリフィックス文字の処理を行わないようにします 通常、ニーモニックプレフィクス「 & 」は その次にくる文字にアンダースコア (_) を付けて 表示する命令であると解釈されます また、「 && 」を 1 つの「 & 」として表示します DT_NOPREFIX を指定すると、この処理が行われなくなります |
DT_RIGHT | テキストを右揃えにします |
DT_RTLREADING | 右から左への読み取り順序で表示します ヘブライ語やアラビア語を表示するときに有効です |
DT_SINGLELINE | テキストを単一行で表示します テキストがキャリッジリターンやラインフィードを含んでいても、改行されません |
DT_TABSTOP | タブ間隔を設定します この値を指定したときは、uFormat パラメータの 15 ビットから 8 ビット (下位ワードの上位バイト) で タブ間隔の文字数を指定します デフォルトのタブ間隔は 8 文字です |
DT_TOP | 長方形の上辺にテキストを揃えます (単一行のときのみ) |
DT_VCENTER | テキストを垂直方向に中央揃えで表示します (単一行のときのみ) |
DT_WORDBREAK | テキストを複数行で表示します 折り返しは自動的に行われます キャリッジリターンとラインフィードの組み合わせによっても折り返されます |