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_SYSCHARWM_SYSKEYDOWNWM_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 集 Windows 10版本 10.0.14393 中引入的 ext-ms-win-ntuser-window-l1-1-4 ()

另请参阅

AttachThreadInput 函数GetFocus 函数WM_KILLFOCUSWM_SETFOCUSWM_SYSCHARWM_SYSKEYDOWNWM_SYSKEYUP键盘输入