GetGUIThreadInfo 関数 (winuser.h)
アクティブ ウィンドウまたは指定した GUI スレッドに関する情報を取得します。
構文
BOOL GetGUIThreadInfo(
[in] DWORD idThread,
[in, out] PGUITHREADINFO pgui
);
パラメーター
[in] idThread
型: DWORD
情報を取得するスレッドの識別子。 この値を取得するには、 GetWindowThreadProcessId 関数を 使用します。 このパラメーターが NULL の場合、関数はフォアグラウンド スレッドの情報を返します。
[in, out] pgui
型: LPGUITHREADINFO
スレッドを記述する情報を受け取る GUITHREADINFO 構造体へのポインター。 この関数を呼び出す前に、 cbSize メンバーを に設定する sizeof(GUITHREADINFO)
必要があることに注意してください。
戻り値
種類: BOOL
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
アクティブ ウィンドウが呼び出し元プロセスによって所有されていない場合でも、この関数は成功します。 指定したスレッドが存在しないか、入力キューがある場合、関数は失敗します。
この関数は、スレッドに関するコンテキスト外の情報を取得する場合に便利です。 取得される情報は、アプリケーションがそれ自体に関する情報を取得した場合と同じです。
編集コントロールの場合、返される rcCaret 四角形には、キャレットとテキストの方向とパディングに関する情報が含まれます。 したがって、カーソルの正しい位置を与えない場合があります。 Sans Serif フォントは、カーソルに次の 4 つの文字を使用します。
カーソル文字 | Unicode コード ポイント |
---|---|
CURSOR_LTR | 0xf00c |
CURSOR_RTL | 0xf00d |
CURSOR_THAI | 0xf00e |
CURSOR_USA | 0xfff (これは、グリフが関連付けられていないマーカー値です) |
rcCaret 四角形の実際の挿入ポイントを取得するには、次の手順を実行します。
- GetKeyboardLayout を呼び出して、現在の入力言語を取得します。
- 現在の入力言語に基づいて、カーソルに使用される文字を決定します。
- フォント、rcCaret によって指定された高さ、および の幅
zero
に対して Sans Serif を使用して CreateFont を呼び出します。 fnWeight の場合は、 を呼び出しますSystemParametersInfo(SPI_GETCARETWIDTH, 0, pvParam, 0)
。 pvParam が 1 より大きい場合は、fnWeight を 700 に設定し、それ以外の場合は fnWeight を 400 に設定します。 - デバイス コンテキスト (DC) にフォントを選択し、 GetCharABCWidths を使用して適切なカーソル文字の幅を取得
B
します。 - 幅を
B
rcCaret に追加します。実際 の挿入ポイントを取得するには、左に移動します。
この関数は、ウィンドウがアクティブ化を失っているときなど、フォアグラウンド スレッドの情報を取得するために呼び出されたときに 、GUITHREADINFO 構造体で有効なウィンドウ ハンドルを返さない場合があります。
DPI 仮想化
GUITHREADINFO 構造体の rcCaret rect で返される座標は、キャレットに関連付けられたウィンドウの観点から論理的な座標です。 これらは、呼び出し元スレッドのモードに仮想化されません。要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | 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で導入) |
関連項目
概念
リファレンス