다음을 통해 공유


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 포함)
라이브러리 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, 키보드 입력