<Return[D]><Top>

DrawTextEx

Declare Function Api_DrawTextEx& Lib "user32" Alias "DrawTextExA" (ByVal hDC&, ByVal lpStr$, ByVal nCount&, lpRect As RECT, ByVal wFormat&, lpDrawTextParams As Any)

Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long, lpDrawTextParams As Any) As Long

指定された長方形領域内に整形したテキストを表示する。

パラメータ
hdc
    デバイスコンテキストのハンドルを指定する。
lpchText
    描画する文字列へのポインタを指定する。

    cchText パラメータに -1 を指定する場合は、このパラメータに指定する文字列は NULL で終わっていなければならない。
    dwDTFormat パラメータで DT_MODIFYSTRING を指定した場合、DrawTextEx 関数によって、この文字列に最大で 4 文字が追加さ

    れる場合がある。文字列を格納するバッファには、この追加文字も格納できるだけのサイズの余裕を持たせておかなければならない。
cchText
    文字列の文字数を指定する。このパラメータに -1 を指定すると、lpchText パラメータは NULL で終わる文字列へのポインタであると見なさ

    れる。この場合、文字列の長さは自動的に計算される。
    Windows 95/98:描画する文字数が 8192 文字を超えることはできない。
lprc
    長方形領域の論理座標が入った RECT 構造体へのポインタを指定する。

    テキストは、この長方形領域内で整形される(dwDTFormat パラメータで DT_NOCLIP を指定した場合を除く)。
dwDTFormat
    テキストを整形する方法を指定する。次の値を組み合わせて指定できる。

    値                                       

意味                                                                                                                             

    DT_BOTTOM

長方形領域の下端にテキストを揃えます。DT_SINGLELINE と同時に指定しなければならない。

    DT_CALCRECT

指定されたテキストを表示するために必要な長方形領域の幅と高さを調べる。複数行テキストの場合は、

 

lprc パラメータで指定された長方形領域の幅を使い、長方形領域の下端をテキストの最終行の下側の境

 

界線にまで広げる。テキストを 1 行で表示する場合は、長方形領域の右端を行の最後の文字の右側の境

 

界線に合うように変更する。どちらの場合も、DrawTextEx 関数は、テキストの描画は行わず、整形され

 

たテキストの高さを返す。

    DT_CENTER

テキストを長方形領域内で横方向に中央揃えで表示する。

    DT_EDITCONTROL

複数行エディットコントロールがもつ特性と同じ特性で描画する。

 

特に、平均文字幅がエディットコントロールと同じ方法で計算され、部分的に見えている最後の行は表示さ

 

れない。

    DT_END_ELLIPSIS

文字列の最後の部分が長方形領域に納まり切らない場合、はみ出す部分が切り取られ、末尾に省略符

 

号(...)が追加される。

 

文字列の最後ではない場所にある単語が長方形領域からはみ出す場合は、省略記号なしで切り取られ

 

る。DT_MODIFYSTRINGフラグがセットされていない限り、文字列が変更されることはない。

    DT_EXPANDTABS

タブ文字を展開する。既定のタブ間隔は 8 文字である。

    DT_EXTERNALLEADING

行の高さに、外部レディングの高さ(テキストの行間として適切な高さ)を加算する。

 

通常、外部レディングはテキスト行の高さに加えられない。

    DT_HIDEPREFIX

Windows 2000:テキストに埋め込まれているプレフィックスとしてのアンパサンド(&)を無視する。

 

後ろに続く文字に下線が施されなくなる。ただし、その他のニーモニックプレフィックス文字は、通常どおり

 

処理される。次に例を示す。

 

入力文字列

"A&bc&&d"

 

通常

"Abc&d"

 

HIDEPREFIX

"Abc&d"

 

DT_NOPREFIX および DT_PREFIXONLY も参照のこと。

    DT_INTERNAL

テキストの表示サイズを計算する際にシステムフォントを使用する。

    DT_LEFT

テキストを左揃えにする。

    DT_MODIFYSTRING

lpchText パラメータが指すバッファに、実際に表示された文字列を格納する。

 

DT_END_ELLIPSIS フラグまたは DT_PATH_ELLIPSIS フラグを指定したときにしか意味を持たない。

    DT_NOCLIP

クリッピングをしない。描画が多少速くなる。

    DT_NOFULLWIDTHCHARBREAK

Windows 98、Windows 2000:行が DBCS(ダブルバイト文字セットの文字列)で改行される

のを防ぐ。このため、改行規則は SBCS 文字列と同じになる。

たとえば、韓国語版 Windows で使用すると、アイコンラベルの表示の信頼性が上がる。

DT_WORDBREAK フラグを指定していなければ、この値は意味を持たない。

    DT_NOPREFIX

プリフィックス文字の処理を行わないようにする。通常は、ニーモニックプレフィクス文字の「&」は、その

次にくる文字に下線(_)を付けて表示せよとの命令であると解釈され、ニーモニックプレフィックス文字の

「&&」は、1 つの「&」を表示せよとの命令であると解釈される。DT_NOPREFIX を指定すると、この

処理が行われなくなる。DT_HIDEPREFIX および DT_PREFIXONLY も参照のこと。

    DT_PATH_ELLIPSIS

指定した長方形領域に収まるように、必要に応じてテキストの途中を省略符号 (...) に置き換える。

円記号(\)が含まれているテキストの場合、最後の円記号の後ろのテキストが可能な限り保持される。

DT_MODIFYSTRING フラグを指定していない限り、文字列が変更されることはない。

DT_END_ELLIPSIS および DT_WORD_ELLIPSIS も参照のこと。

    DT_PATH_ELLIPSIS

指定した長方形領域に収まるように、必要に応じてテキストの途中を省略符号 (...) に置き換える。

円記号(\)が含まれているテキストの場合、最後の円記号の後ろのテキストが可能な限り保持される。

DT_MODIFYSTRING フラグを指定していない限り、文字列が変更されることはない。

DT_END_ELLIPSIS および DT_WORD_ELLIPSIS も参照のこと。

    DT_PREFIXONLY

Windows 2000:アンパサンドプレフィックス文字(&)の後ろの文字がくる位置の下線だけを描画する。

文字列内のその他の文字は一切描画しない。次に例を示す。

入力文字列

"A&bc&&d"

通常

"Abc&d"

PREFIXONLY

" "

 

DT_NOPREFIX および DT_HIDEPREFIX も参照のこと。

    DT_RIGHT

テキストを右揃えにする。

    DT_RTLREADING

hdc パラメータで指定したデバイスコンテキストで選択されているフォントがヘブライ語かアラビア語だった場合

 

に、双方向テキストを右から左への読み取り順序で表示する。既定の読み取り順序は、どのテキストでも

 

左から右である。

    DT_SINGLELINE

テキストを単一行で表示する。たとえ、テキストがキャリッジリターンやラインフィードを含んでいても、改行さ

 

れない。

    DT_TABSTOP

タブ間隔を設定する。タブ間隔の平均文字数は、lpDTParams パラメータで渡す DRAWTEXTPARAMS

 

構造体で指定する。

    DT_TOP

長方形領域の上端にテキストを揃える。

    DT_VCENTER

テキストを縦方向に中央揃えで表示する。この値は、DT_SINGLELINE を指定した場合にしか使用でき

 

ない。

    DT_WORDBREAK

テキストを複数行で表示する。折り返しは、lpRect パラメータで指定した長方形領域の端から単語がはみ

 

出す部分で自動的に行われる。キャリッジリターンとラインフィードの組み合わせによっても折り返される。

    DT_WORD_ELLIPSIS

長方形領域内に納まらない部分がある場合、それを切り取ったうえで、必ず省略記号(...)を追加する。

 

DT_END_ELLIPSIS および DT_PATH_ELLIPSIS も参照のこと。

lpDTParams
    追加のテキスト整形情報が入った、DRAWTEXTPARAMS 構造体へのポインタを指定する。必要なければ、NULL を指定する。
 

戻り値
    関数が成功すると、テキストの高さが返る。

    DT_VCENTER または DT_BOTTOM を指定した場合は、lprc->top から描画したテキストの下端までのオフセットが返る。
    関数が失敗すると、0 が返る。
    Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    DrawTextEx 関数では、文字送り方向の角度も文字の向きの角度も 0 に設定されているフォントしかサポートされていない。