Função DeferWindowPos (winuser.h)

Atualizações a estrutura de posição de várias janelas especificada para a janela especificada. Em seguida, a função retorna um identificador para a estrutura atualizada. A função EndDeferWindowPos usa as informações nessa estrutura para alterar a posição e o tamanho de várias janelas simultaneamente. A função BeginDeferWindowPos cria a estrutura .

Sintaxe

HDWP DeferWindowPos(
  [in]           HDWP hWinPosInfo,
  [in]           HWND hWnd,
  [in, optional] HWND hWndInsertAfter,
  [in]           int  x,
  [in]           int  y,
  [in]           int  cx,
  [in]           int  cy,
  [in]           UINT uFlags
);

Parâmetros

[in] hWinPosInfo

Tipo: HDWP

Um identificador para uma estrutura de posição de várias janelas que contém informações de tamanho e posição para uma ou mais janelas. Essa estrutura é retornada por BeginDeferWindowPos ou pela chamada mais recente para DeferWindowPos.

[in] hWnd

Digite: HWND

Um identificador para a janela para a qual as informações de atualização são armazenadas na estrutura. Todas as janelas em uma estrutura de posição de várias janelas devem ter o mesmo pai.

[in, optional] hWndInsertAfter

Digite: HWND

Um identificador para a janela que precede a janela posicionada na ordem Z. Esse parâmetro deve ser um identificador de janela ou um dos valores a seguir. Esse parâmetro será ignorado se o sinalizador SWP_NOZORDER estiver definido no parâmetro uFlags .

Valor Significado
HWND_BOTTOM
((HWND)1)
Places a janela na parte inferior da ordem Z. Se o parâmetro hWnd identificar uma janela superior, a janela perderá sua status superior e será colocada na parte inferior de todas as outras janelas.
HWND_NOTOPMOST
((HWND)-2)
Places a janela acima de todas as janelas não superiores (ou seja, atrás de todas as janelas superiores). Esse sinalizador não terá efeito se a janela já for uma janela não superior.
HWND_TOP
((HWND)0)
Places a janela na parte superior da ordem Z.
HWND_TOPMOST
((HWND)-1)
Coloca a janela acima de todas as janelas não superiores. A janela mantém sua posição superior mesmo quando está desativada.

[in] x

Tipo: int

A coordenada X do canto esquerdo superior da janela.

[in] y

Tipo: int

A coordenada Y do canto esquerdo superior da janela.

[in] cx

Tipo: int

A nova largura da janela, em pixels.

[in] cy

Tipo: int

A nova altura da janela, em pixels.

[in] uFlags

Tipo: UINT

Uma combinação dos valores a seguir que afetam o tamanho e a posição da janela.

Valor Significado
SWP_DRAWFRAME
0x0020
Desenha um quadro (definido na descrição da classe da janela) ao redor da janela.
SWP_FRAMECHANGED
0x0020
Envia uma mensagem WM_NCCALCSIZE para a janela, mesmo que o tamanho da janela não esteja sendo alterado. Se esse sinalizador não for especificado, WM_NCCALCSIZE será enviado somente quando o tamanho da janela estiver sendo alterado.
SWP_HIDEWINDOW
0x0080
Oculta a janela.
SWP_NOACTIVATE
0x0010
Não ativa a janela. Se esse sinalizador não estiver definido, a janela será ativada e movida para a parte superior do grupo mais superior ou não superior (dependendo da configuração do parâmetro hWndInsertAfter ).
SWP_NOCOPYBITS
0x0100
Descarta todo o conteúdo da área do cliente. Se esse sinalizador não for especificado, o conteúdo válido da área do cliente será salvo e copiado de volta para a área do cliente depois que a janela for dimensionada ou reposicionada.
SWP_NOMOVE
0x0002
Mantém a posição atual (ignora os parâmetros x e y ).
SWP_NOOWNERZORDER
0x0200
Não altera a posição da janela do proprietário na ordem Z.
SWP_NOREDRAW
0x0008
Não redesenha as alterações. Se esse sinalizador estiver definido, nenhum repositório de nenhum tipo ocorrerá. Isso se aplica à área do cliente, à área não cliente (incluindo a barra de título e as barras de rolagem) e a qualquer parte da janela pai descoberta como resultado da movimentação da janela. Quando esse sinalizador é definido, o aplicativo deve invalidar ou redesenhar explicitamente todas as partes da janela e da janela pai que precisem ser redesenhadas.
SWP_NOREPOSITION
0x0200
O mesmo que o sinalizador SWP_NOOWNERZORDER .
SWP_NOSENDCHANGING
0x0400
Impede que a janela receba a mensagem de WM_WINDOWPOSCHANGING .
SWP_NOSIZE
0x0001
Retém o tamanho atual (ignora os parâmetros cx e cy ).
SWP_NOZORDER
0x0004
Retém a ordem Z atual (ignora o parâmetro hWndInsertAfter ).
SWP_SHOWWINDOW
0x0040
Exibe a janela.

Retornar valor

Tipo: HDWP

O valor retornado identifica a estrutura de posição de várias janelas – atualizada. O identificador retornado por essa função pode ser diferente do identificador passado para a função . O novo identificador que essa função retorna deve ser passado durante a próxima chamada para a função DeferWindowPos ou EndDeferWindowPos .

Se recursos insuficientes do sistema estiverem disponíveis para que a função tenha êxito, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Se uma chamada para DeferWindowPos falhar, o aplicativo deverá abandonar a operação de posicionamento de janela e não chamar EndDeferWindowPos.

Se SWP_NOZORDER não for especificado, o sistema colocará a janela identificada pelo parâmetro hWnd na posição após a janela identificada pelo parâmetro hWndInsertAfter . Se hWndInsertAfter for NULL ou HWND_TOP, o sistema colocará a janela hWnd na parte superior da ordem Z. Se hWndInsertAfter estiver definido como HWND_BOTTOM, o sistema colocará a janela hWnd na parte inferior da ordem Z.

Todas as coordenadas para janelas filho são relativas ao canto superior esquerdo da área do cliente da janela pai.

Uma janela pode ser feita em uma janela superior definindo hWndInsertAfter para o sinalizador HWND_TOPMOST e garantindo que o sinalizador de SWP_NOZORDER não esteja definido ou definindo a posição da janela na ordem Z para que ela esteja acima de qualquer janela superior existente. Quando uma janela não superior se torna superior, suas janelas de propriedade também se tornam superiores. Seus proprietários, no entanto, não são alterados.

Se nem o sinalizador SWP_NOACTIVATE nem SWP_NOZORDER for especificado (ou seja, quando o aplicativo solicitar que uma janela seja ativada simultaneamente e sua posição na ordem Z for alterada), o valor especificado em hWndInsertAfter será usado apenas nas seguintes circunstâncias:

  • Nem o sinalizador HWND_TOPMOST nem HWND_NOTOPMOST é especificado em hWndInsertAfter.
  • A janela identificada por hWnd não é a janela ativa.
Um aplicativo não pode ativar uma janela inativa sem também trazê-la para a parte superior da ordem Z. Um aplicativo pode alterar a posição de uma janela ativada na ordem Z sem restrições ou ativar uma janela e movê-la para a parte superior das janelas mais altas ou não superiores.

Uma janela superior não será mais superior se for reposicionada para a parte inferior (HWND_BOTTOM) da ordem Z ou após qualquer janela não superior. Quando uma janela superior é feita não superior, seus proprietários e suas janelas de propriedade também são feitas janelas não superiores.

Uma janela não superior pode ter uma janela superior, mas não vice-versa. Qualquer janela (por exemplo, uma caixa de diálogo) de propriedade de uma janela superior é se torna uma janela superior para garantir que todas as janelas de propriedade permaneçam acima de seu proprietário.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll
Conjunto de APIs ext-ms-win-ntuser-window-l1-1-4 (introduzido no Windows 10, versão 10.0.14393)

Confira também

Begindeferwindowpos

Conceitual

Enddeferwindowpos

Referência

Showwindow

Windows