<Return[G]><Top>

GetTextExtentPoint32

Declare Function Api_GetTextExtentPoint32& Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hDC&, ByVal lpsz$, ByVal cbString&, lpSize As POINTAPI)

Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE) As Long

文字列の幅と高さを計算する。

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

    文字列の長さは cbString パラメータで決まるため、この文字列はゼロ文字 ('\0') で終わっている必要はない。
cbString
    lpString パラメータに指定したバッファのサイズ(バイト数)を指定する。
    Windows 95/98:8192 より大きい値は指定できない。
lpSize
    文字列のサイズ(幅と高さ)を受け取る SIZE 構造体へのポインタを指定する。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。
    Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使う。

 

解説

    GetTextExtentPoint32 関数は、現在選択されているフォントを使って文字列の幅と高さを計算する。幅と高さ(論理単位)の計算には、

    クリッピング領域の設定は考慮されない。
    デバイスの中には、通常のセル配列に文字を配置しないデバイス(すなわちカーニングを実行するデバイス)もあるため、文字列内の個々

    の文字のサイズの総計と文字列全体のサイズとが一致しないことがある。
    算出された文字列幅には、SetTextCharacterExtra 関数により設定された文字間隔も考慮されている。
    この関数は、文字列が水平であること(つまり文字送り方向の角度が 0 度であること)を前提にテキストのサイズを計算する。これは、テ

    キストの高さの計算にも幅の計算にも言えることである。文字送り方向の角度が 0 度ではないフォントを使う場合でも、文字送り方向の角

    度を使った計算は行われないので、取得した値をアプリケーション内で明示的に変換しなければならない。