ExtTextOutA 関数 (wingdi.h)
ExtTextOut 関数は、現在選択されているフォント、背景色、およびテキストの色を使用してテキストを描画します。 必要に応じて、クリッピング、opaquing、またはその両方に使用するディメンションを指定できます。
構文
BOOL ExtTextOutA(
[in] HDC hdc,
[in] int x,
[in] int y,
[in] UINT options,
[in] const RECT *lprect,
[in] LPCSTR lpString,
[in] UINT c,
[in] const INT *lpDx
);
パラメーター
[in] hdc
デバイス コンテキストへのハンドル。
[in] x
文字列の配置に使用される参照ポイントの x 座標 (論理座標)。
[in] y
文字列の配置に使用される参照ポイントの y 座標 (論理座標)。
[in] options
アプリケーション定義の四角形の使用方法を指定します。 このパラメーターには、次の 1 つ以上の値を指定できます。
値 | 意味 |
---|---|
|
テキストは四角形にクリップされます。 |
|
lpString 配列は GetCharacterPlacement から返される配列を参照し、それ以上の言語固有の処理は必要ありませんので、GDI によって直接解析する必要があります。 グリフのインデックス作成は TrueType フォントにのみ適用されますが、ビットマップフォントとベクターフォントにフラグを使用して、それ以上の言語処理が不要であり、GDI が文字列を直接処理する必要があることを示すことができます。 文字列がラスター フォントの 8 ビット値の配列であると見なされる場合でも、すべてのグリフ インデックスは 16 ビット値であることに注意してください。
ExtTextOutW の場合、グリフ インデックスはメタファイルに保存されます。 ただし、正しい文字を表示するには、同じフォントを使用してメタファイルを再生する必要があります。 ExtTextOutA の場合、グリフ インデックスは保存されません。 |
|
システムで使用するために予約されています。 アプリケーションでこのフラグを設定すると、国際スクリプトのサポートが失われ、場合によってはテキストがまったく表示されないことがあります。 |
|
数値を表示するには、ヨーロッパ数字を使用します。 |
|
数値を表示するには、ロケールに適した数字を使用します。 |
|
現在の背景色を使用して四角形を塗りつぶす必要があります。 |
|
これが設定されると、 lpDx が指す配列に値のペアが含まれます。 各ペアの最初の値は、通常どおり、隣接する文字セルの原点間の距離ですが、2 番目の値はフォントの垂直方向に沿った変位です。 |
|
Windows の中東言語エディション: この値が指定され、ヘブライ語またはアラビア語のフォントがデバイス コンテキストで選択されている場合、文字列は右から左への読み取り順序を使用して出力されます。 この値を指定しない場合、文字列は左から右の順序で出力されます。 SetTextAlign でTA_RTLREADING値を設定すると、同じ効果が得られます。 この値は、下位互換性のために保持されます。 |
ETO_GLYPH_INDEXとETO_RTLREADINGの値を一緒に使用することはできません。 ETO_GLYPH_INDEXは、すべての言語処理が完了したことを意味するため、ETO_RTLREADING フラグも指定されている場合、関数は無視します。
[in] lprect
クリッピング、opaquing、またはその両方に使用される四角形の次元を論理座標で指定するオプションの RECT 構造体へのポインター。
[in] lpString
描画するテキストを指定する文字列へのポインター。 cbCount は文字列の長さを指定するため、文字列を 0 で終える必要はありません。
[in] c
lpStringが指す文字列の長さ。
この値は 8192 を超えることはできません。
[in] lpDx
隣接する文字セルの原点間の距離を示す、省略可能な値の配列へのポインター。 たとえば、lpDx[i] 論理単位は、文字セル i と文字セル i + 1 の原点を区切ります。
戻り値
文字列が描画される場合、戻り値は 0 以外です。 ただし、ansi バージョンの ExtTextOut が ETO_GLYPH_INDEX で呼び出された場合、関数は何も行わない場合でも TRUE を 返します。
関数が失敗した場合は、0 を返します。
注釈
指定したデバイス コンテキストの現在のテキスト配置設定によって、参照ポイントを使用してテキストを配置する方法が決まります。 テキスト配置設定は、 GetTextAlign 関数を呼び出すことによって取得されます。 テキスト配置の設定は 、SetTextAlign 関数を呼び出すことによって変更されます。 テキストの配置には、次の値を使用できます。 水平方向と垂直方向の配置に影響を与えるフラグから選択できるフラグは 1 つだけです。 さらに、現在の位置を変更する 2 つのフラグのうちの 1 つだけを選択できます。
lpDx パラメーターが NULL の場合、ExtTextOut 関数は文字間の既定の間隔を使用します。 文字セルの起点と lpDx パラメーターが指す配列の内容は、論理単位で指定されます。 文字セルの原点は、文字セルの左上隅として定義されます。
既定では、この関数では現在の位置は使用も更新もされません。 ただし、アプリケーションは、fMode パラメーターを TA_UPDATECP に設定して SetTextAlign 関数を呼び出して、指定されたデバイス コンテキストに対して ExtTextOut を呼び出すたびにシステムが現在の位置を使用および更新できるようにします。 このフラグを設定すると、システムは後続の ExtTextOut 呼び出しで X パラメーターと Y パラメーターを無視します。
ANSI バージョンの ExtTextOut の場合、 lpDx 配列の INT 値の数は lpString のバイト数と同じです。 DBCS 文字の場合、2 バイトの合計が目的の dx に加算される限り、 lpDx エントリの dx を先頭バイトと後続バイトの間に割り当てます。 Unicode バージョンの ExtTextOut を含む DBCS 文字の場合、各 Unicode グリフは 1 つの pdx エントリを取得します。
GetTextExtentExPointの alpDx 値は、ExtTextOut の lpDx 値と同じではないことに注意してください。 lpDx で alpDx 値を使用するには、まずそれらを処理する必要があります。
ExtTextOut では、必要に応じて Uniscribe が使用され、フォント フォールバックが発生します。 ETO_IGNORELANGUAGE フラグは、この動作を阻害し、渡すべきではありません。
さらに、ExtTextOut はカーネル モードに移行する前に呼び出しの内部バッチ処理を実行し、PolyTextOut と ExtTextOut の使用量を比較する際のパフォーマンス上の問題の一部を軽減します。
ヒント
ExtTextOut は、さまざまな言語の表示を処理する機能により、最新の開発のために PolyTextOut よりも強く推奨されます。
例
例については、「 メニューの使用」の「Menu-Item テキスト文字列のフォントを設定する」を参照してください。
注意
wingdi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして ExtTextOut を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wingdi.h (Windows.h を含む) |
Library | Gdi32.lib |
[DLL] | Gdi32.dll |