次の方法で共有


DrawTextA 関数 (winuser.h)

DrawText 関数は、指定した四角形に書式設定されたテキストを描画します。 指定した方法 (タブの展開、文字の正当化、改行など) に従ってテキストの書式を設定します。

追加の書式設定オプションを指定するには、DrawTextEx 関数を使用します。

構文

int DrawTextA(
  [in]      HDC    hdc,
  [in, out] LPCSTR lpchText,
  [in]      int    cchText,
  [in, out] LPRECT lprc,
  [in]      UINT   format
);

パラメーター

[in] hdc

デバイス コンテキストへのハンドル。

[in, out] lpchText

描画するテキストを指定する文字列へのポインター。 cchText パラメーターが -1 の場合、文字列は null で終わる必要があります。

uFormat DT_MODIFYSTRINGが含まれている場合、この関数はこの文字列に最大 4 文字を追加できます。 文字列を含むバッファーは、これらの余分な文字を格納するのに十分な大きさにする必要があります。

[in] cchText

文字列の長さ (文字数)。 cchText が -1 の場合、lpchText パラメーターは null で終わる文字列へのポインターであると見なされ、DrawText は文字カウントを自動的に計算します。

[in, out] lprc

テキストを書式設定する四角形 (論理座標) を含む RECT 構造体へのポインター。

[in] format

テキストを書式設定するメソッド。 このパラメーターには、次の値のうち 1 つ以上を指定できます。

価値 意味
DT_BOTTOM
テキストを四角形の下部に配置します。 この値は、DT_SINGLELINE値でのみ使用されます。
DT_CALCRECT
四角形の幅と高さを決定します。 複数行のテキストがある場合、DrawText は、lpRect パラメーターによって指される四角形の幅を使用し、四角形の底を拡張してテキストの最後の行を連結します。 最大の単語が四角形よりも広い場合は、幅が拡張されます。 テキストが四角形の幅より小さい場合、幅は小さくなります。 テキストが 1 行しかない場合、DrawText は、四角形の右側を変更して、行の最後の文字を囲みます。 いずれの場合も、DrawText は、書式設定されたテキストの高さを返しますが、テキストは描画しません。
DT_CENTER
テキストを四角形内で水平方向に中央揃えします。
DT_EDITCONTROL
複数行編集コントロールのテキスト表示特性を複製します。 具体的には、平均文字幅は編集コントロールの場合と同じ方法で計算され、関数は部分的に表示される最後の行を表示しません。
DT_END_ELLIPSIS
表示されるテキストの場合、文字列の末尾が四角形に収まらない場合は切り捨てられ、省略記号が追加されます。 文字列の末尾にない単語が四角形の制限を超えると、省略記号なしで切り捨てられます。

DT_MODIFYSTRING フラグが指定されていない限り、文字列は変更されません。

DT_PATH_ELLIPSISとDT_WORD_ELLIPSISと比較します。

DT_EXPANDTABS
タブ文字を展開します。 タブあたりの既定の文字数は 8 文字です。 DT_WORD_ELLIPSIS、DT_PATH_ELLIPSIS、およびDT_END_ELLIPSISの値をDT_EXPANDTABS値と共に使用することはできません。
DT_EXTERNALLEADING
行の高さの先頭に外部フォントが含まれます。 通常、外部の先頭はテキスト行の高さに含まれません。
DT_HIDEPREFIX
テキスト内のアンパサンド (&) プレフィックス文字を無視します。 次の文字は下線付きではありませんが、他のニーモニックプレフィックス文字は引き続き処理されます。

例:

入力文字列: "A&bc&&d"

normal: "Abc&d"

DT_HIDEPREFIX: "Abc&d"

DT_NOPREFIXとDT_PREFIXONLYと比較します。

DT_INTERNAL
システム フォントを使用してテキスト メトリックを計算します。
DT_LEFT
テキストを左揃えにします。
DT_MODIFYSTRING
指定した文字列を、表示されるテキストと一致するように変更します。 DT_END_ELLIPSISまたはDT_PATH_ELLIPSISが指定されていない限り、この値は無効です。
DT_NOCLIP
クリッピングなしで描画します。 DrawText は、DT_NOCLIPを使用するとやや高速です。
DT_NOFULLWIDTHCHARBREAK
DBCS (ダブルワイド文字列) での改行を防ぎ、改行規則が SBCS 文字列と同等になるようにします。 たとえば、これはアイコン ラベルの読みやすさを高める目的で、韓国語のウィンドウで使用できます。 DT_WORDBREAKが指定されていない限り、この値は無効です。
DT_NOPREFIX
プレフィックス文字の処理をオフにします。 通常、DrawText は、ニーモニックプレフィックス文字 & を次の文字をアンダースコア付けするディレクティブとして解釈し、ニーモニックプレフィックス文字は単一の &を出力するディレクティブとして && します。 DT_NOPREFIXを指定すると、この処理はオフになります。 例えば

例:

入力文字列: "A&bc&&d"

normal: "Abc&d"

DT_NOPREFIX: "A&bc&&d"

DT_HIDEPREFIXとDT_PREFIXONLYと比較します。

DT_PATH_ELLIPSIS
表示されるテキストの場合、文字列の中央にある文字を省略記号に置き換え、結果が指定した四角形に収まるようにします。 文字列に円記号 (\\) 文字が含まれている場合、DT_PATH_ELLIPSISは最後の円記号の後のテキストをできるだけ保持します。

DT_MODIFYSTRING フラグが指定されていない限り、文字列は変更されません。

DT_END_ELLIPSISとDT_WORD_ELLIPSISと比較します。

DT_PREFIXONLY
アンパサンド (&) プレフィックス文字の後の文字の位置に下線のみを描画します。 文字列内の他の文字は描画しません。 例えば

例:

入力文字列: "A&bc&&d"n

normal: "Abc&d"

DT_PREFIXONLY: " _ "

DT_HIDEPREFIXとDT_NOPREFIXと比較します。

DT_RIGHT
テキストを右揃えにします。
DT_RTLREADING
hdc で選択したフォントがヘブライ語またはアラビア語のフォントである場合、双方向テキストの右から左への読み取り順序でのレイアウト。 すべてのテキストの既定の読み取り順序は左から右です。
DT_SINGLELINE
1 行のみにテキストを表示します。 復帰と改行は行を中断しません。
DT_TABSTOP
タブ位置を設定します。 uFormat パラメーターのビット 15 から 8 (下位ワードの上位バイト) は、各タブの文字数を指定します。タブあたりの既定の文字数は 8 文字です。 DT_CALCRECT、DT_EXTERNALLEADING、DT_INTERNAL、DT_NOCLIP、およびDT_NOPREFIXの値をDT_TABSTOP値と共に使用することはできません。
DT_TOP
テキストを四角形の上部に揃えます。
DT_VCENTER
テキストを垂直方向に中央揃えします。 この値は、DT_SINGLELINE値でのみ使用されます。
DT_WORDBREAK
単語を区切ります。 単語が、lpRect パラメーターで指定された四角形の端を越えて拡張される場合、単語間で行が自動的に分割されます。 復帰改行シーケンスも改行します。

これが指定されていない場合、出力は 1 行に出力されます。

DT_WORD_ELLIPSIS
四角形に収まらない単語を切り捨て、省略記号を追加します。

DT_END_ELLIPSISとDT_PATH_ELLIPSISと比較します。

戻り値

関数が成功した場合、戻り値は論理単位でのテキストの高さになります。 DT_VCENTERまたはDT_BOTTOMが指定されている場合、戻り値は、描画されたテキストの lpRect->top から下部へのオフセットです。

関数が失敗した場合、戻り値は 0 です。

備考

DrawText 関数は、デバイス コンテキストで選択したフォント、テキストの色、背景色を使用してテキストを描画します。 DT_NOCLIP形式を使用しない限り、DrawText は、指定した四角形の外側に表示されないようにテキストをクリップします。 大きなオーバーハングがあるテキストは、テキスト文字列の最初の "W" や斜体のテキストなど、クリップされる可能性があることに注意してください。 DT_SINGLELINE形式が指定されていない限り、すべての書式は複数行であると見なされます。

選択したフォントが指定した四角形に対して大きすぎる場合、DrawText 関数は小さいフォントを置き換えようとしません。

デバイス コンテキストのテキスト配置モードには、TA_LEFT、TA_TOP、およびTA_NOUPDATECPフラグを含める必要があります。

手記

winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして DrawText を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winuser.h (Windows.h を含む)
ライブラリ User32.lib
DLL User32.dll
API セットの ext-ms-win-ntuser-misc-l1-1-0 (Windows 8 で導入)

関連項目

DrawTextEx の

フォント関数とテキスト関数

フォントとテキストの概要

GrayString

RECT の

TabbedTextOut を する

TextOut の