GetTabbedTextExtentW

GetTabbedTextExtent 関数は文字列の幅と高さを計算する。(Unicode)

GetTabbedTextExtentW hdc, lpString, chCount, nTabPositions, lpnTabStopPositions

hdc : [intptr] デバイスコンテキストへのハンドル。
lpString : [wstr] 文字列へのポインタ。
chCount : [int] テキスト文字列の長さ。ANSI 関数ではバイト数、Unicode 関数では WORD 数を指定する。ANSI 関数では SBCS コードページの文字は 1 バイト、DBCS コードページの多くの文字は 2 バイトを占める。Unicode 関数では現在定義されている多くの Unicode 文字(BMP 内)は 1 WORD、サロゲートは 2 WORD である。
nTabPositions : [int] lpnTabStopPositions が指す配列内のタブストップ位置の数。
lpnTabStopPositions : [var] タブストップ位置(デバイス単位)を含む配列へのポインタ。タブストップは昇順に並んでいる必要があり、最小の x 値を配列の先頭にする。

(プラグイン / モジュール : user32.dll)

解説

GetTabbedTextExtent 関数は文字列の幅と高さを計算する。(Unicode)

[戻り値]
関数が成功した場合、戻り値は文字列の寸法(論理単位)である。高さは上位ワード、幅は下位ワードに入る。関数が失敗した場合、戻り値は 0
である。GetTabbedTextExtent は hDC が無効の場合、または nTabPositions が 0
未満の場合に失敗する。

[備考]
現在のクリッピング領域は GetTabbedTextExtent
が返す幅と高さに影響しない。一部のデバイスは文字を規則的なセル配列に配置しない(カーニングを行う)ため、文字列内の各文字のエクステントの合計が文字列全体のエクステントと一致しないことがある。nTabPositions
が 0 で lpnTabStopPositions が NULL の場合、タブは平均文字幅の 8
倍に展開される。nTabPositions が 1 の場合、タブストップは配列の最初の値で示される距離ごとに置かれる。
> [!NOTE] > winuser.h ヘッダは GetTabbedTextExtent を、UNICODE
プリプロセッサ定数の定義に応じて ANSI 版と Unicode
版を自動選択するエイリアスとして定義する。エンコーディングに依存するコードと、エンコーディング中立なエイリアスの混在は、コンパイルエラーや実行時エラーの原因となる。詳しくは
[Conventions for Function
Prototypes](/windows/win32/intl/conventions-for-function-prototypes)
を参照。

情報

プラグイン / モジュールuser32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の user32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_user32_gen2.hs