CWnd::SetWindowPos
Altera o tamanho, posição, e ordem z de filho, pop-up, e janelas de nível superior.
BOOL SetWindowPos(
const CWnd* pWndInsertAfter,
int x,
int y,
int cx,
int cy,
UINT nFlags
);
Parâmetros
pWndInsertAfter
Identifica o objeto de CWnd que é precederá (maior que) este objeto de CWnd na ordem z.Este parâmetro pode ser um ponteiro para CWnd ou a Ponteiro a um dos seguintes valores:wndBottom coloca a janela na parte inferior da ordem z.Se este CWnd uma janela é o mais alto, a janela perde seus status mais alto; o sistema coloca a janela na parte inferior de quaisquer outras janelas.
wndTop coloca a janela na parte superior da ordem z.
wndTopMost coloca o que o nível superior da janela acima de todas.A janela mantém sua posição mais alto mesmo quando é desativada.
wndNoTopMost reposiciona a janela para a parte superior de todas as janelas não mais alto (isto é, por trás de todas as janelas o nível superior).Este sinalizador não tem efeito se a janela já é uma janela não mais alto.
Para regras sobre como usar esse parâmetro, consulte a seção “comentários” em este tópico.
x
Especifica a nova posição do lado esquerdo da janela.s
Especifica a nova posição da parte superior da janela.cx
Especifica a nova largura da janela.cy
Especifica a nova altura da janela.nFlags
Especificar opções de dimensionamento e posicionamento.Este parâmetro pode ser uma combinação das seguintes sinalizações:SWP_DRAWFRAME desenha um ladrilho (definido quando a janela foi criada) em torno da janela.
SWP_FRAMECHANGED envia uma mensagem de WM_NCCALCSIZE a janela, mesmo se o tamanho da janela não está sendo alterado.Se este sinalizador não for especificado, WM_NCCALCSIZE é enviado somente quando o tamanho da janela está sendo alterado.
SWP_HIDEWINDOW oculta a janela.
SWP_NOACTIVATE não ativa a janela.Se este sinalizador não é definido, a janela está ativada e movida para a parte superior do grupo ou não o nível mais alto nível superior (dependendo da configuração de parâmetro de pWndInsertAfter ).
SWP_NOCOPYBITS descarta todo o conteúdo da área cliente.Se este sinalizador não for especificado, o conteúdo válidos da área cliente são salvos e copiados de volta para a área cliente após a janela é dimensionada ou reposicionada.
SWP_NOMOVE mantém a posição atual (ignora os parâmetros de x e y ).
SWP_NOOWNERZORDER não altera a posição da janela do proprietário na ordem z.
SWP_NOREDRAW alterações não redesenho.Se este sinalizador é definido, nenhum redesenhar de tipo ocorre.Isso se aplica a área cliente, para a área de nonclient (incluindo título e barras de rolagem), e qualquer parte da janela pai descoberta resultado da janela movida.Quando esse sinalizador é definido, o aplicativo deve explicitamente invalidar ou redesenho todas as partes da janela e da janela pai que devem ser redesenhadas.
SWP_NOREPOSITION mesmo que SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING impede que a janela recebe a mensagem de WM_WINDOWPOSCHANGING .
SWP_NOSIZE retém o tamanho atual (ignora os parâmetros de cx e de cy ).
SWP_NOZORDER retém ordenação do atual (ignora pWndInsertAfter).
SWP_SHOWWINDOW exibe a janela.
Valor de retorno
Diferente de zero se a função é com êxito; caso contrário, 0.
Comentários
As janelas são classificadas na tela de acordo com a sua ordem z; a janela na parte superior da ordem z aparece sobre quaisquer outras janelas na ordem.
Todas as coordenadas para janelas filho são coordenadas do cliente (em relação ao canto superior esquerdo da área cliente da janela pai).
Uma janela pode ser movida para a parte superior da ordem z ou definindo o parâmetro de pWndInsertAfter a &wndTopMost e garantir que o sinalizador de SWP_NOZORDER não está definido ou definindo a ordem z de uma janela de modo que esteja acima de todas as janelas mais alto existentes.Quando uma janela não mais alto é feita mais alto, suas janelas possuídas são feitas também mais alto.Os proprietários não são alterados.
Uma janela mais alto é não o nível mais alto está reposicionada para a parte inferior (&wndBottom) da ordem z ou após qualquer janela não mais alto.Quando uma janela mais alto é feita não mais alto, todos os proprietários e suas janelas possuídas são feitas também ao windows não mais alto.
Se nem nem SWP_NOACTIVATESWP_NOZORDER são especificados (isto é, quando o aplicativo solicitar uma janela simultaneamente está ativada e colocada na ordem z especificado), o valor especificado em pWndInsertAfter é usado apenas nas seguintes circunstâncias:
Nem nem &wndTopMost&wndNoTopMost são especificados no parâmetro de pWndInsertAfter .
Esta janela não é a janela ativa.
Um aplicativo não pode ativar uma janela inativo sem também trazê-la à parte superior da ordem z.Os aplicativos podem alterar a ordem z de uma janela ativada sem restrições.
Uma janela não mais alto pode possuir uma janela mais alto, mas não vice-versa.Qualquer janela (por exemplo, uma caixa de diálogo) propriedade por uma janela o nível mais alto em si é feita para uma janela o nível mais alto para garantir que todos possuam o windows fiquem anterior do proprietário.
Com versões do windows 3,1 e posterior, o windows podem ser movidas para a parte superior da ordem z e ser bloqueadas lá definindo os estilos de WS_EX_TOPMOST .Uma janela tão o nível mais alto mantém sua posição mais alto mesmo quando desativada.Por exemplo, selecione o WinHelp sempre superior no comando faz a janela da Ajuda mais alto, e então permanece visível quando você retorna para seu aplicativo.
Para criar uma janela, um chamada mais alto SetWindowPos com o parâmetro de pWndInsertAfter igual a &wndTopMost, ou definir o estilo de WS_EX_TOPMOST quando você criar a janela.
Se a ordem z contém qualquer janela com o estilo de WS_EX_TOPMOST movida, uma janela com o valor de &wndTopMost é colocada na parte superior de todas as janelas não mais alto, mas abaixo de todas as janelas mais alto.Quando um aplicativo ativa uma janela inativo sem o bit de WS_EX_TOPMOST , a janela é acima de todas janelas não mais alto movidas mas abaixo de todas as janelas mais alto.
Se SetWindowPos é chamado quando o parâmetro de pWndInsertAfter é &wndBottom e CWnd uma janela é o mais alto, a janela perde seus status mais alto (WS_EX_TOPMOST é desmarcado), e o sistema coloca a janela na parte inferior da ordem z.
Exemplo
void CMyApp::OnHideApplication()
{
//m_pMainWnd is the main application window, a member of CMyApp
ASSERT_VALID(m_pMainWnd);
// hide the application's windows before closing all the documents
m_pMainWnd->ShowWindow(SW_HIDE);
m_pMainWnd->ShowOwnedPopups(FALSE);
// put the window at the bottom of z-order, so it isn't activated
m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}
Requisitos
Cabeçalho: afxwin.h