CWnd::SetWindowPos

Chame essa função de membro para alterar o tamanho, posição e a ordem Z de filho, janelas de pop-up e 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 CWnd que precederá este objeto CWnd na ordem Z.Esse parâmetro pode ser um ponteiro para um CWnd ou um do ponteiro para um dos valores seguintes:

    • wndBottom locais a janela na parte inferior da ordem Z.Se este CWnd é uma janela de nível superior, a janela perde seu status de nível superior; o sistema coloca a janela na parte inferior de Tudo as Outro janelas.

    • wndTop locais a janela na parte superior da ordem Z.

    • wndTopMost locais a janela windows nontopmost acima de tudo.A janela mantém sua posição superior mesmo quando ele é desativado.

    • wndNoTopMost reposiciona a janela para a parte superior de Tudo as janelas nontopmost (isto é, atrás de Tudo as janelas de nível superior).Esse Sinalizar tem efeito se a janela já estiver uma janela nontopmost.

    Consulte a seção "Comentários" para esta função para regras sobre como este parâmetro é usado.

  • x
    Especifica a Novo posição do Esquerda laterais da janela.

  • y
    Especifica a Novo posição da parte superior da janela.

  • cx
    Especifica a Novo largura da janela.

  • cy
    Especifica a Novo altura da janela.

  • nFlags
    Especifica o dimensionamento e opções de posicionamento.Esse parâmetro pode ser uma combinação das seguintes opções:

    • SWP_DRAWFRAME desenha um quadro (definido quando a janela foi criada) ao redor a janela.

    • SWP_FRAMECHANGEDenvios um WM_NCCALCSIZE mensagem para a janela, mesmo se não for sendo alterado tamanho da janela.Se esse Sinalizar não for especificado, WM_NCCALCSIZE é enviado apenas quando o tamanho da janela está sendo alterado.

    • SWP_HIDEWINDOW oculta a janela.

    • SWP_NOACTIVATE   Não Ativar a janela.Se esse Sinalizar não estiver definido, a janela é ativada e movida para o topo do primeiro ou o AAgrupararo nontopmost (dependendo da configuração do parâmetro pWndInsertAfter).

    • Descartes de SWP_NOCOPYBITS todo o conteúdo de área do cliente.Se esse Sinalizar não for especificado, o conteúdo válido da área do cliente é salvas e copiado Voltar para a área cliente depois que a janela for tamanho ou reposicionada.

    • SWP_NOMOVE   Mantém posição atual (ignora o x e y parâmetros).

    • SWP_NOOWNERZORDER não alterar posição da janela do proprietário na ordem Z.

    • SWP_NOREDRAW não redesenhar as alterações.Se esse Sinalizar estiver definido, redesenho de qualquer tipo ocorrerá.Isso se aplica a área do cliente, a área que não é destinada aos clientes (incluindo as barras de título e rolagem) e qualquer parte da janela pai descoberta como resultado da janela de movido.Quando esse Sinalizar é definido, o aplicativo deve explicitamente invalidar ou redesenhar as partes da janela e janela de pai que deve ser redesenhada.

    • SWP_NOREPOSITIONigual ao SWP_NOOWNERZORDER .

    • SWP_NOSENDCHANGINGimpede que a janela de recebimento da mensagem WM_WINDOWPOSCHANGING.

    • SWP_NOSIZE   Mantém o tamanho atual (ignora os parâmetros de cx e cy).

    • SWP_NOZORDER   Mantém a ordem atual para a (ignora pWndInsertAfter).

    • SWP_SHOWWINDOW exibe a janela.

Valor de retorno

Diferente de zero se a função for bem-sucedida; caso contrário 0.

Comentários

Janelas são ordenadas na tela de acordo com a sua ordem Z; a janela na parte superior da ordem Z aparece acima de Tudo as Outro janelas na ordem.

Tudo as coordenadas de janelas filho são coordenadas do cliente (Relativo para o canto superior esquerdo de área de cliente da janela pai). 

Uma janela pode ser movida para o topo da ordem Z ou por Configuração o parâmetro pWndInsertAfter a & wndTopMost e garantir que o Sinalizar de SWP_NOZORDER não está definido ou por Configuração uma janela é a ordem Z para que fique acima quaisquer janelas de nível superior existentes.Quando uma janela nontopmost é feita primeira, suas janelas de propriedade também serão refletidas superior.Seus proprietários não são alterados.

Uma janela de nível superior não está mais superior se é reposicionado para a parte inferior (& wndBottom) de ordem Z ou após qualquer janela nontopmost.Quando uma janela de nível superior é feita nontopmost, Tudo seus proprietários e suas janelas de propriedade são feitos também nontopmost janelas.

Se nem SWP_NOACTIVATESWP_NOZORDER for especificado (isto é, quando o aplicativo solicita que uma janela simultaneamente ser ativada e colocada na ordem Z especificada), o valor especificado em pWndInsertAfter é usado apenas nas seguintes circunstâncias:

  • & wndTopMost nem & wndNoTopMost é especificado no parâmetro pWndInsertAfter.

  • Esta janela não é a janela Ativo.

Um aplicativo não é possível ativar uma janela inativa sem também trazendo-lo para o topo da ordem Z.Aplicativos podem alterar a ordem Z de uma janela ativada sem restrições.

Uma janela nontopmost pode possuir uma janela de nível superior, mas não vice-versa.Qualquer janela (por exemplo, uma caixa de diálogo) pertencente a uma janela de nível superior é feita uma janela de nível superior para garantir que Tudo as propriedade janelas fique acima de seu proprietário.

Nas versões do Windows 3.1 e posteriores, windows podem ser movidos para a parte superior da ordem Z e existe bloqueadas por configuração seus WS_EX_TOPMOST estilos.Uma janela superior mantém sua posição superior, mesmo quando desativado.Por exemplo, selecionando o comando WinHelp sempre visível torna a janela da Ajuda superior e ele e permanece visível quando você retornar à seu aplicativo.

Para criar uma janela de nível superior, chamada SetWindowPos com o parâmetro pWndInsertAfter igual a & wndTopMostou definir o estilo de WS_EX_TOPMOST quando você criar a janela.

Se a ordem Z contém Tudo as janelas com o estilo de WS_EX_TOPMOST, uma janela movidos com o & wndTopMost valor é colocado na parte superior de Tudo as janelas nontopmost, mas abaixo as janelas de nível superior.Quando um aplicativo ativa uma janela inativa sem o WS_EX_TOPMOST bit, a janela é movida acima Tudo as janelas nontopmost mas abaixo as janelas de nível superior.

Se SetWindowPos é chamado quando o parâmetro pWndInsertAfter é & wndBottom e CWnd é uma janela de nível superior, a janela perde seu status de nível superior (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

Consulte também

Referência

Classe CWnd

Gráfico de hierarquia

DeferWindowPos

SetWindowPos

Outros recursos

Membros CWnd