지정된 창을 만든 스레드를 포그라운드로 가져와 창을 활성화합니다. 키보드 입력이 창으로 전달되고 사용자에 대한 다양한 시각적 신호가 변경됩니다. 시스템은 다른 스레드보다 포그라운드 창을 만든 스레드에 약간 더 높은 우선 순위를 할당합니다.
Syntax
BOOL SetForegroundWindow(
[in] HWND hWnd
);
매개 변수
[in] hWnd
형식: HWND
활성화되어 포그라운드로 가져와야 하는 창에 대한 핸들입니다.
반환 값
형식: BOOL
창이 전경으로 가져온 경우 반환 값은 0이 아닌 값입니다.
창을 포그라운드로 가져오지 않은 경우 반환 값은 0입니다.
비고
시스템은 포그라운드 창을 설정할 수 있는 프로세스를 제한합니다. 프로세스는 다음과 같은 경우에만 SetForegroundWindow 를 호출하여 포그라운드 창을 설정할 수 있습니다.
- 다음 조건은 모두 true입니다.
- 호출 프로세스는 UWP 앱이나 Windows 8 또는 8.1용으로 설계된 Windows 스토어 앱이 아닌 데스크톱 애플리케이션에 속합니다.
- 전경 프로세스는 LockSetForegroundWindow 함수에 대한 이전 호출로 SetForegroundWindow에 대한 호출을 사용하지 않도록 설정하지 않았습니다.
- 활성화된 메뉴가 없습니다.
- 또한 다음 조건 중 하나 이상이 true입니다.
- 포그라운드 잠금 제한 시간이 만료되었습니다(SystemParametersInfo의 SPI_GETFOREGROUNDLOCKTIMEOUT 참조).
- 호출 프로세스는 포그라운드 프로세스입니다.
- 호출 프로세스는 포그라운드 프로세스에 의해 시작되었습니다.
- 현재 전경 창이 없으므로 전경 프로세스가 없습니다.
- 호출 프로세스에서 마지막 입력 이벤트를 수신했습니다.
- 포그라운드 프로세스 또는 호출 프로세스가 디버그되고 있습니다.
이러한 조건을 충족하는 경우에도 프로세스에서 포그라운드 창을 설정할 수 있는 권한이 거부될 수 있습니다.
사용자가 다른 창으로 작업하는 동안 애플리케이션은 창을 포그라운드로 강제 적용할 수 없습니다. 대신 Windows에서 창의 작업 표시줄 단추를 깜박이면 사용자에게 알립니다.
포그라운드 창을 설정할 수 있는 프로세스는 AllowSetForegroundWindow 함수를 호출하여 다른 프로세스가 포그라운드 창을 설정할 수 있도록 할 수 있습니다. AllowSetForegroundWindow에 대한 dwProcessId 매개 변수로 지정된 프로세스는 입력이 해당 프로세스에서 전달되지 않는 한 다음에 사용자가 입력을 생성할 때 또는 AllowSetForegroundWindow에 대한 이전 호출과 동일한 프로세스가 지정되지 않는 한 다음에 프로세스가 AllowSetForegroundWindow를 호출할 때 포그라운드 창을 설정하는 기능을 잃게 됩니다.
포그라운드 프로세스는 LockSetForegroundWindow 함수를 호출하여 SetForegroundWindow에 대한 호출을 사용하지 않도록 설정할 수 있습니다.
Example
다음 코드 예제에서는 SetForegroundWindow를 사용하는 방법을 보여 줍니다.
// If the window is invisible we will show it and make it topmost without the
// foreground focus. If the window is visible it will also be made the
// topmost window without the foreground focus. If wParam is TRUE then
// for both cases the window will be forced into the foreground focus
if (uMsg == m_ShowStageMessage) {
BOOL bVisible = IsWindowVisible(hwnd);
SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW |
(bVisible ? SWP_NOACTIVATE : 0));
// Should we bring the window to the foreground
if (wParam == TRUE) {
SetForegroundWindow(hwnd);
}
return (LRESULT) 1;
}
요구 사항
| 요구 사항 | 가치 |
|---|---|
| 지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱만 해당] |
| 지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱만 해당] |
| 대상 플랫폼 | 윈도우즈 |
| Header | winuser.h(Windows.h 포함) |
| Library | User32.lib |
| DLL | User32.dll |
| API 집합 | ext-ms-win-ntuser-window-l1-1-0(Windows 8에서 도입) |
참고하십시오
개념적
참조