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 | テキストを複数行で表示します 折り返しは自動的に行われます キャリッジリターンとラインフィードの組み合わせによっても折り返されます |