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