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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 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_KILLFOCUSWM_SETFOCUSWM_SYSCHARWM_SYSKEYDOWNWM_SYSKEYUP鍵盤輸入