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 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包括 Windows.h) |
程式庫 | 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、 鍵盤輸入