Compartilhar via


Função SetForegroundWindow (winuser.h)

Traz o thread que criou a janela especificada para o primeiro plano e ativa a janela. A entrada do teclado é direcionada para a janela e várias indicações visuais são alteradas para o usuário. O sistema atribui uma prioridade ligeiramente maior ao thread que criou a janela em primeiro plano do que a outros threads.

Sintaxe

BOOL SetForegroundWindow(
  [in] HWND hWnd
);

Parâmetros

[in] hWnd

Tipo: HWND

Um identificador para a janela que deve ser ativado e trazido para o primeiro plano.

Valor de retorno

Tipo: BOOL

Se a janela tiver sido trazida para o primeiro plano, o valor retornado não será zero.

Se a janela não tiver sido trazida para o primeiro plano, o valor retornado será zero.

Observações

O sistema restringe quais processos podem definir a janela de primeiro plano. Um processo pode definir a janela de primeiro plano chamando SetForegroundWindow somente se:

  • Todas as seguintes condições são verdadeiras:
    • O processo de chamada pertence a um aplicativo da área de trabalho, não a um aplicativo UWP ou a um aplicativo da Windows Store projetado para Windows 8 ou 8.1.
    • O processo de primeiro plano não desabilitou as chamadas para SetForegroundWindow por uma chamada anterior para a função LockSetForegroundWindow .
    • Nenhum menu está ativo.
  • Além disso, pelo menos uma das seguintes condições é verdadeira:
    • O tempo limite de bloqueio em primeiro plano expirou (consulte SPI_GETFOREGROUNDLOCKTIMEOUT no SystemParametersInfo).
    • O processo de chamada é o processo em primeiro plano.
    • O processo de chamada foi iniciado pelo processo em primeiro plano.
    • No momento, não há nenhuma janela de primeiro plano e, portanto, nenhum processo em primeiro plano.
    • O processo de chamada recebeu o último evento de entrada.
    • O processo de primeiro plano ou o processo de chamada está sendo depurado.

É possível que um processo seja negado o direito de definir a janela de primeiro plano, mesmo que ela atenda a essas condições.

Um aplicativo não pode forçar uma janela para o primeiro plano enquanto o usuário está trabalhando com outra janela. Em vez disso, o Windows exibe o botão da barra de tarefas da janela para notificar o usuário.

Um processo que pode definir a janela de primeiro plano pode habilitar outro processo para definir a janela de primeiro plano chamando a função AllowSetForegroundWindow . O processo especificado pelo parâmetro dwProcessId para AllowSetForegroundWindow perde a capacidade de definir a janela de primeiro plano na próxima vez que o usuário gerar entrada, a menos que a entrada seja direcionada para esse processo ou na próxima vez que um processo chamar AllowSetForegroundWindow, a menos que o mesmo processo seja especificado como na chamada anterior para AllowSetForegroundWindow.

O processo em primeiro plano pode desabilitar chamadas para SetForegroundWindow chamando a função LockSetForegroundWindow .

Example

O exemplo de código a seguir demonstra o uso de 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;
}

Requirements

Requirement Value
Cliente mínimo suportado Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo compatível Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
Header winuser.h (inclua Windows.h)
Library User32.lib
de DLL User32.dll
Conjunto de API ext-ms-win-ntuser-window-l1-1-0 (introduzido no Windows 8)

Consulte também

AllowSetForegroundWindow

Conceitual

FlashWindowEx

GetForegroundWindow

LockSetForegroundWindow

Referência

SetActiveWindow

Windows