次の方法で共有


GetTextExtentExPointA 関数 (wingdi.h)

GetTextExtentExPoint 関数は、指定した文字列内の指定したスペースに収まる文字数を取得し、それらの各文字のテキスト範囲を配列に格納します。 (テキスト範囲は、スペースの先頭とスペースに収まる文字の間の距離です)。この情報は、ワード ラッピング計算に役立ちます。

構文

BOOL GetTextExtentExPointA(
  [in]  HDC    hdc,
  [in]  LPCSTR lpszString,
  [in]  int    cchString,
  [in]  int    nMaxExtent,
  [out] LPINT  lpnFit,
  [out] LPINT  lpnDx,
  [out] LPSIZE lpSize
);

パラメーター

[in] hdc

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

[in] lpszString

エクステントを取得する null で終わる文字列へのポインター。

[in] cchString

lpszStr パラメーターが指す文字列内の文字数。 ANSI 呼び出しでは文字列の長さをバイト単位で指定し、Unicode の場合は文字列の長さを WORD で指定します。 ANSI 関数の場合、SBCS コード ページの文字はそれぞれ 1 バイトですが、DBCS コード ページのほとんどの文字は 2 バイトを取ります。Unicode 関数の場合、現在定義されているほとんどの Unicode 文字 (Basic 多言語プレーン (BMP) の文字) は 1 WORD で、Unicode サロゲートは 2 つの WORD です。

[in] nMaxExtent

書式設定された文字列の最大許容幅 (論理単位)。

[out] lpnFit

nMaxExtent パラメーターで指定されたスペースに収まる最大文字数のカウントを受け取る整数へのポインター。 lpnFit パラメーターが NULL場合、nMaxExtent パラメーターは無視されます。

[out] lpnDx

部分的な文字列エクステントを受け取る整数の配列へのポインター。 配列内の各要素は、文字列の先頭と、nMaxExtent パラメーターで指定されたスペースに収まる文字の 1 つの間の距離を論理単位で指定します。 配列全体が内部的に使用されるため、この配列には、cchString パラメーターで指定された文字と同数以上の要素が必要です。 この関数は、lpnFit パラメーターで指定された数の文字に対して有効なエクステントを配列に格納します。 配列の残りの部分の値はすべて無視する必要があります。 alpDx NULL場合、関数は文字列の幅の一部を計算しません。

文字のシーケンスが任意の数のグリフで表される複合スクリプトの場合、alpDx 配列内の値は、lpnFit パラメーターで指定された数まで、コード ポイントと 1 対 1 で一致します。 ここでも、alpDx 配列内の残りの値は無視する必要があります。

[out] lpSize

文字列の次元を受け取る SIZE 構造体へのポインター (論理単位)。 このパラメーターは NULLできません。

戻り値

関数が成功した場合、戻り値は 0 以外です。

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

備考

lpnFit パラメーターと alpDx パラメーターの両方が NULL場合、GetTextExtentExPoint 関数の呼び出しは、GetTextExtentPoint 関数の呼び出しと同じです。

GetTextExtentExPointの ANSI バージョンの場合、lpDx 配列の INT 値の数は、lpStringバイト数と同じです。 DBCS 文字の 2 バイトに対応する INT 値は、複合文字全体のエクステントです。

GetTextExtentExPointalpDx 値は、extTextOutの lpDx同じではありません。 lpDxで alpDx使用するには、最初にそれらを処理する必要があります。

この関数は、テキスト範囲を返すとき、テキストが水平方向、つまりエスケープメントが常に 0 であることを前提としています。 これは、テキストの水平方向と垂直方向の両方の測定値に当てはまります。 0 以外のエスケープメントを指定するフォントを使用する場合でも、この関数はテキスト範囲を計算するときに角度を使用しません。 アプリは明示的に変換する必要があります。 ただし、グラフィックス モードを GM_ADVANCED に設定し、文字の向きが印刷方向から 90 度の場合、この関数が返す値はこの規則に従いません。 特定の文字列の文字の向きと印刷の向きが一致する場合、この関数は、SIZE 構造体の文字列の次元を {cx: 116, cy : 18 } として返します。 同じ文字列に対して文字の向きと印刷の向きが 90 度離れている場合、この関数は、SIZE 構造体の文字列の次元を {cx: 18, cy : 116 } として返します。

この関数は、文字列内の連続する各文字の範囲を返します。 これらを論理単位に丸めると、GetCharWidthから返される結果とは異なる結果が得られます。これは、論理単位に丸められた各文字の幅を返します。

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wingdi.h (Windows.h を含む)
ライブラリ Gdi32.lib
DLL Gdi32.dll

関連項目

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

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

GetTextExtentPoint の

SIZE