SetFocus 関数 (winuser.h)
指定したウィンドウにキーボード フォーカスを設定します。 ウィンドウは、呼び出し元スレッドのメッセージ キューにアタッチされる必要があります。
構文
HWND SetFocus(
[in, optional] HWND hWnd
);
パラメーター
[in, optional] hWnd
型: HWND
キーボード入力を受け取るウィンドウへのハンドル。 このパラメーターが NULL の場合、キーストロークは無視されます。
戻り値
型: HWND
関数が成功した場合、戻り値は、以前にキーボード フォーカスを持っていたウィンドウへのハンドルです。 hWnd パラメーターが無効な場合、またはウィンドウが呼び出し元のスレッドのメッセージ キューにアタッチされていない場合、戻り値は NULL です。 拡張エラー情報を取得するには、 GetLastError 関数を呼び出します。
拡張エラー ERROR_INVALID_PARAMETER (0x57) は、ウィンドウが無効な状態であることを意味します。
注釈
この関数は、キーボード フォーカスを失うウィンドウに WM_KILLFOCUS メッセージを送信し、キーボード フォーカスを受け取るウィンドウに WM_SETFOCUS メッセージを送信します。 また、フォーカスを受け取るウィンドウ、またはフォーカスを受け取るウィンドウの親をアクティブにします。
ウィンドウがアクティブでフォーカスがない場合、押されたキーを押すと、 WM_SYSCHAR、 WM_SYSKEYDOWN、または WM_SYSKEYUPメッセージが 生成されます。 VK_MENU キーも押すと、メッセージの lParam パラメーターのビット 30 が設定されます。 それ以外の場合、生成されるメッセージには、このビットが設定されていません。
AttachThreadInput 関数を使用すると、スレッドは入力処理を別のスレッドにアタッチできます。 これにより、スレッドは SetFocus を呼び出して、別のスレッドのメッセージ キューに接続されているウィンドウにキーボード フォーカスを設定できます。
例
例については、「 ダイアログ ボックスの初期化」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | 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-4 (Windows 10 バージョン 10.0.14393 で導入) |
こちらもご覧ください
AttachThreadInput 関数、GetFocus 関数、WM_KILLFOCUS、WM_SETFOCUS、WM_SYSCHAR、WM_SYSKEYDOWN、WM_SYSKEYUP、キーボード入力