GetWindowTextLengthW 関数 (winuser.h)

指定したウィンドウのタイトル バー テキストの長さを文字数で取得します (ウィンドウにタイトル バーがある場合)。 指定したウィンドウがコントロールの場合、関数はコントロール内のテキストの長さを取得します。 ただし、 GetWindowTextLength は、別のアプリケーションの編集コントロールのテキストの長さを取得できません。

構文

int GetWindowTextLengthW(
  [in] HWND hWnd
);

パラメーター

[in] hWnd

型: HWND

ウィンドウまたはコントロールへのハンドル。

戻り値

型: int

関数が成功した場合、戻り値はテキストの長さ (文字数) です。 特定の条件下では、この値がテキストの長さを超える可能性があります (「解説」を参照)。

ウィンドウにテキストがない場合、戻り値は 0 です。

関数エラーは、戻り値が 0 で、 GetLastError の結果が 0 以外であることが示されます。

注意

この関数では、最新のエラー情報はクリアされません。 成功または失敗を特定するには、 SetLastError を 0 で呼び出して最新のエラー情報をクリアし、 GetLastError を呼び出します。

解説

ターゲット ウィンドウが現在のプロセスによって所有されている場合、 GetWindowTextLength により 、指定 したウィンドウまたはコントロールにWM_GETTEXTLENGTH メッセージが送信されます。

特定の条件下では、 GetWindowTextLength 関数は、テキストの実際の長さを超える値を返す場合があります。 これは、ANSI と Unicode の特定の組み合わせで発生します。これは、システムがテキスト内に 2 バイト文字セット (DBCS) 文字が存在する可能性があるためです。 ただし、戻り値は常に、テキストの実際の長さと同じ大きさになります。したがって、常にそれを使用してバッファー割り当てをガイドできます。 この動作は、アプリケーションで ANSI 関数と、Unicode を使用する一般的なダイアログの両方を使用する場合に発生する可能性があります。 また、アプリケーションがウィンドウ プロシージャが Unicode であるウィンドウで GetWindowTextLength の ANSI バージョンを使用している場合や、ウィンドウ プロシージャが ANSI であるウィンドウで GetWindowTextLength の Unicode バージョンを使用している場合にも発生する可能性があります。 ANSI 関数と ANSI 関数の詳細については、「 関数プロトタイプの規則」を参照してください。

テキストの正確な長さを取得するには、メッセージの WM_GETTEXTLB_GETTEXT、または CB_GETLBTEXT 、または GetWindowText 関数を使用します。

注意

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

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-window-l1-1-1 (Windows 8.1 で導入)

関連項目

CB_GETLBTEXT

概念

GetWindowText

LB_GETTEXT

その他のリソース

リファレンス

SetWindowText

WM_GETTEXT

WM_GETTEXTLENGTH

Windows