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 集 | Windows 10版本 10.0.14393 中引入的 ext-ms-win-ntuser-window-l1-1-4 () |
另请参阅
AttachThreadInput 函数、 GetFocus 函数、 WM_KILLFOCUS、 WM_SETFOCUS、 WM_SYSCHAR、 WM_SYSKEYDOWN、 WM_SYSKEYUP、 键盘输入