Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переносит поток, который создал указанное окно на переднем плане и активирует окно. Ввод клавиатуры направляется в окно, а различные визуальные подсказки изменяются для пользователя. Система назначает немного более высокий приоритет потоку, создавшего окно переднего плана, чем для других потоков.
Синтаксис
BOOL SetForegroundWindow(
[in] HWND hWnd
);
Параметры
[in] hWnd
Тип: HWND
Дескриптор окна, который должен быть активирован и доставлен на передний план.
Возвращаемое значение
Тип: BOOL
Если окно было доставлено на передний план, возвращаемое значение ненулевое.
Если окно не было доставлено на передний план, возвращаемое значение равно нулю.
Замечания
Система ограничивает, какие процессы могут задать окно переднего плана. Процесс может задать окно переднего плана, вызвав SetForegroundWindow , только если:
- Все следующие условия имеют значение true:
- Вызывающий процесс принадлежит классическому приложению, а не приложению UWP или приложению Магазина Windows, предназначенному для Windows 8 или 8.1.
- Процесс переднего плана не отключил вызовы SetForegroundWindow предыдущим вызовом функции LockSetForegroundWindow .
- Меню не активны.
- Кроме того, по крайней мере одно из следующих условий имеет значение true:
- Истек срок ожидания блокировки переднего плана (см. SPI_GETFOREGROUNDLOCKTIMEOUT в SystemParametersInfo).
- Вызывающий процесс — это процесс переднего плана.
- Вызывающий процесс был запущен процессом переднего плана.
- В настоящее время нет окна переднего плана и, следовательно, нет процесса переднего плана.
- Вызывающий процесс получил последнее событие ввода.
- Выполняется отладка процесса переднего плана или вызывающего процесса.
Процесс может быть отказано в праве задать окно переднего плана, даже если оно соответствует этим условиям.
Приложение не может принудительно принудить окно к переднему плану, пока пользователь работает с другим окном. Вместо этого Windows мигает кнопку панели задач окна, чтобы уведомить пользователя.
Процесс, который может задать окно переднего плана, может включить другой процесс, чтобы задать окно переднего плана, вызвав функцию AllowSetForegroundWindow . Процесс, указанный параметром dwProcessId в AllowSetForegroundWindow , теряет возможность задать окно переднего плана при следующем создании входных данных, если входные данные не направлены на этот процесс, или при следующем вызове allowSetForegroundWindow, если только не указан тот же процесс, как в предыдущем вызове AllowSetForegroundWindow.
Процесс переднего плана может отключить вызовы SetForegroundWindow , вызвав функцию LockSetForegroundWindow .
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 Профессиональный [только классические приложения] |
| минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
| целевая платформа | Windows |
| Header | winuser.h (включая Windows.h) |
| Library | User32.lib |
| DLL | User32.dll |
| Набор API | ext-ms-win-ntuser-window-l1-1-0 (представлено в Windows 8) |
См. также
Концептуальный
Справочные материалы