GetTextExtentPoint32A 関数 (wingdi.h)
GetTextExtentPoint32 関数は、指定した文字列の幅と高さを計算します。
構文
BOOL GetTextExtentPoint32A(
[in] HDC hdc,
[in] LPCSTR lpString,
[in] int c,
[out] LPSIZE psizl
);
パラメーター
[in] hdc
デバイス コンテキストへのハンドル。
[in] lpString
テキスト文字列を指定するバッファーへのポインター。 c パラメーターは文字列の長さを指定するため、文字列を null で終える必要はありません。
[in] c
lpString が指す文字列の長さ。
[out] psizl
文字列の次元を論理単位で受け取る SIZE 構造体へのポインター。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。
注釈
GetTextExtentPoint32 関数は、現在選択されているフォントを使用して文字列のディメンションを計算します。 幅と高さは論理単位で計算され、クリッピングは考慮しません。
一部のデバイスではカーニング文字があるため、文字列内の文字のエクステントの合計が文字列のエクステントと等しくない場合があります。
計算される文字列の幅には、 SetTextCharacterExtra 関数によって設定された文字間の間隔と 、SetTextJustification によって設定された理由が考慮されます。 これは、画面に表示する場合と印刷する場合の両方に当てはまります。 ただし、extTextOut で lpDx が設定されている場合、GetTextExtentPoint32 では文字間の間隔または理由は考慮されません。 さらに、EMF の場合、印刷結果では、文字間の間隔と理由の両方が常に考慮されます。
画面に表示されるテキストを処理する場合、計算される文字列の幅には、 SetTextCharacterExtra 関数によって設定された文字間の間隔と 、SetTextJustification によって設定された理由が考慮されます。 ただし、extTextOut で lpDx が設定されている場合、GetTextExtentPoint32 では文字間の間隔または理由は考慮されません。 ただし、EMF で印刷する場合:
- 印刷結果は文字間の間隔を無視しますが、 GetTextExtentPoint32 はそれを考慮します。
- 印刷結果は正当な理由を考慮しますが、 GetTextExtentPoint32 では無視されます。
GetTextExtentPoint32 では、テキスト文字列の高さを計算するときに、"\n" (改行) 文字または "\r\n" 文字 (復帰文字と改行文字) は考慮されません。
例
例については、「 同じ行に異なるフォントからテキストを描画する」を参照してください。
注意
wingdi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetTextExtentPoint32 を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wingdi.h (Windows.h を含む) |
Library | Gdi32.lib |
[DLL] | Gdi32.dll |