Função SetWindowPos (winuser.h)
Altera o tamanho, a posição e a ordem Z de uma janela filho, pop-up ou de nível superior. Essas janelas são ordenadas de acordo com sua aparência na tela. A janela mais alta recebe a classificação mais alta e é a primeira janela na ordem Z.
Sintaxe
BOOL SetWindowPos(
[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] hWnd
Digite: HWND
Um identificador para a janela.
[in, optional] hWndInsertAfter
Digite: HWND
Um identificador para a janela para preceder a janela posicionada na ordem Z. Esse parâmetro deve ser um identificador de janela ou um dos valores a seguir.
Para obter mais informações sobre como esse parâmetro é usado, consulte a seção Comentários a seguir.
[in] X
Tipo: int
A nova posição do lado esquerdo da janela, nas coordenadas do cliente.
[in] Y
Tipo: int
A nova posição da parte superior da janela, nas coordenadas do cliente.
[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
O dimensionamento da janela e os sinalizadores de posicionamento. Esse parâmetro pode ser uma combinação dos seguintes valores.
Valor | Significado |
---|---|
|
Se o thread de chamada e o thread que possui a janela estiverem anexados a filas de entrada diferentes, o sistema postará a solicitação no thread que possui a janela. Isso impede que o thread de chamada bloqueie sua execução enquanto outros threads processam a solicitação. |
|
Impede a geração da mensagem WM_SYNCPAINT . |
|
Desenha um quadro (definido na descrição da classe da janela) ao redor da janela. |
|
Aplica novos estilos de quadro definidos usando a função SetWindowLong . 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. |
|
Oculta a janela. |
|
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 ). |
|
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. |
|
Mantém a posição atual (ignora os parâmetros X e Y ). |
|
Não altera a posição da janela do proprietário na ordem Z. |
|
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. |
|
O mesmo que o sinalizador SWP_NOOWNERZORDER . |
|
Impede que a janela receba a mensagem de WM_WINDOWPOSCHANGING . |
|
Retém o tamanho atual (ignora os parâmetros cx e cy ). |
|
Retém a ordem Z atual (ignora o parâmetro hWndInsertAfter ). |
|
Exibe a janela. |
Retornar valor
Tipo: BOOL
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Comentários
Como parte da nova arquitetura do Vista, todos os serviços foram movidos da área de trabalho interativa para a Sessão 0. As operações do hwnd e do gerenciador de janelas só são eficazes dentro de uma sessão e as tentativas entre sessões de manipular o hwnd falharão. Para obter mais informações, consulte The Windows Vista Developer Story: Application Compatibility Cookbook.
Se você tiver alterado determinados dados de janela usando SetWindowLong, deverá chamar SetWindowPos para que as alterações entrem em vigor. Use a seguinte combinação para uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED
.
Uma janela pode ser feita em uma janela superior definindo o parâmetro hWndInsertAfter como HWND_TOPMOST e garantindo que o sinalizador de SWP_NOZORDER não esteja definido ou definindo a posição de uma janela na ordem Z para que ele 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 circunstâncias a seguir.
- Nem o sinalizador HWND_TOPMOST nem HWND_NOTOPMOST é especificado em hWndInsertAfter.
- A janela identificada por hWnd não é a janela ativa.
Se uma janela superior for reposicionada para a parte inferior (HWND_BOTTOM) da ordem Z ou após qualquer janela não superior, ela não será mais 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 o inverso não pode ocorrer. Qualquer janela (por exemplo, uma caixa de diálogo) de propriedade de uma janela superior é feita uma janela superior, para garantir que todas as janelas de propriedade permaneçam acima de seu proprietário.
Se um aplicativo não estiver em primeiro plano e estiver em primeiro plano, ele deverá chamar a função SetForegroundWindow .
Para usar SetWindowPos para trazer uma janela para a parte superior, o processo que possui a janela deve ter a permissão SetForegroundWindow .
Exemplos
Para obter um exemplo, consulte Inicializando uma caixa de diálogo.
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-0 (introduzido em Windows 8) |
Confira também
Conceitual
Referência