CWnd::SetWindowPos

Modificare le dimensioni, la posizione e l'ordine Z figlio, popup e delle finestre di primo livello.

BOOL SetWindowPos(
   const CWnd* pWndInsertAfter,
   int x,
   int y,
   int cx,
   int cy,
   UINT nFlags 
);

Parametri

  • pWndInsertAfter
    Identifica l'oggetto CWnd che precederà (sia superiore a questo oggetto CWnd nell'ordine Z.Questo parametro può essere un puntatore a CWnd o Pointer su uno dei seguenti valori:

    • wndBottom posiziona la finestra nella parte inferiore dell'ordine Z.Se questo CWnd è una finestra in primo piano, la finestra non lo stato in primo piano, il sistema posiziona la finestra nella parte inferiore di tutte le altre finestre.

    • wndTop ordina la finestra nella parte superiore di.

    • wndTopMost posizionamento di windows non in primo piano della finestra soprattutto.La finestra gestisce la posizione in primo piano anche quando è disattivata.

    • wndNoTopMost riposiziona la finestra nella parte superiore delle finestre non in primo piano ovvero in tutte le finestre in primo piano).Questo flag non ha effetto se la finestra è già una finestra in primo piano.

    Per le regole su come utilizzare questo parametro, vedere la sezione "note" di questo argomento.

  • x
    Specifica la nuova posizione della parte sinistra della finestra.

  • y
    Specifica la nuova posizione superiore della finestra.

  • cx
    Specifica la nuova larghezza della finestra.

  • cy
    Specifica la nuova altezza della finestra.

  • nFlags
    Specifica il ridimensionamento e opzioni di posizionamento.Questo parametro può essere una combinazione dei seguenti flag:

    • SWP_DRAWFRAME estrae un frame (definito quando la finestra è stata creata) per racchiudere la finestra.

    • SWP_FRAMECHANGED invia un messaggio WM_NCCALCSIZE la finestra, anche se la dimensione della finestra non viene modificata.Se questo flag non viene specificato, WM_NCCALCSIZE viene inviato solo quando la dimensione della finestra viene modificata.

    • SWP_HIDEWINDOW nasconde la finestra.

    • SWP_NOACTIVATE non attiva la finestra.Se questo flag non è impostato, la finestra viene attivata e spostata nella parte superiore del gruppo in primo piano oppure non in primo piano in base al valore del parametro pWndInsertAfter ).

    • SWP_NOCOPYBITS rimuovere l'intero contenuto dell'area client.Se questo flag non viene specificato, il contenuto valido dell'area client viene salvato e copiato nell'area client dopo la finestra viene ridimensionata o riposizionato.

    • SWP_NOMOVE manterrà la posizione corrente (ignora i parametri x e y).

    • SWP_NOOWNERZORDER non modifica la posizione della finestra proprietaria nell'ordine Z.

    • SWP_NOREDRAW non ridisegna le modifiche.Se questo flag è impostato, non l'aggiornamento di qualsiasi tipo si verifica.Ciò si applica all'area client, all'area non client (inclusi titolo e barre di scorrimento) e a qualsiasi parte della finestra padre scoperta come risultato della finestra spostata.Quando il flag è impostato, l'applicazione deve esplicitamente invalidare o aggiornato tutte le parti della finestra e la finestra padre che devono essere ridisegnata.

    • SWP_NOREPOSITION stessi SWP_NOOWNERZORDER.

    • SWP_NOSENDCHANGING impedisce la finestra dalla ricezione del messaggio WM_WINDOWPOSCHANGING.

    • SWP_NOSIZE conserva le dimensioni correnti (ignora i parametri cy e cx ).

    • SWP_NOZORDER conserva l'ordine corrente (ignora pWndInsertAfter).

    • SWP_SHOWWINDOW visualizzare la finestra.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Note

Windows è ordinato sullo schermo in base al relativo ordine Z, la finestra nella parte superiore dell'ordine Z viene visualizzata in tutte le altre finestre in ordine.

Tutte le coordinate per le finestre figlio sono coordinate del client (relativa all'angolo superiore sinistro dell'area client della finestra padre). 

Una finestra può essere spostata nella parte superiore dell'ordine Z qualsiasi impostando il parametro pWndInsertAfter a &wndTopMost e assicurarsi che il flag SWP_NOZORDER non è impostato o impostando l'ordine Z di una finestra in modo che sia su tutte le finestre in primo piano esistenti.Quando una finestra in primo piano viene impostata in primo piano, le relative finestre di proprietà vengono apportate in primo piano.I proprietari non vengono modificati.

Una finestra in primo piano non è più in primo piano se viene riposizionato alla fine (&wndBottoml'ordine Z o dopo qualsiasi finestra non in primo piano.Quando una finestra in primo piano viene resa non in primo piano, tutti i proprietari e le relative finestre di proprietà viene impostata su windows non in primo piano.

Se non SWP_NOACTIVATESWP_NOZORDER viene specificato (ovvero quando l'applicazione richiede che una finestra contemporaneamente sia attivata e inserita nell'ordine Z specificato, il valore specificato in pWndInsertAfter viene utilizzato solo nelle seguenti circostanze:

  • &wndTopMost Né né &wndNoTopMost viene specificato nel parametro pWndInsertAfter.

  • Questa finestra non è la finestra attiva.

Un'applicazione non può attivare una finestra inattiva senza anche portarla nella parte superiore dell'ordine Z.Le applicazioni possono modificare l'ordine Z di una finestra attivata senza restrizioni.

Una finestra in primo piano può essere inclusa una finestra in primo piano, ma non viceversa.Qualsiasi finestra, ad esempio una finestra di dialogo di proprietà di una finestra in primo piano stessa viene impostata su una finestra in primo piano per garantire che tutti dispongono delle finestre rimangono nel proprietario.

Con le versioni di Windows 3,1 e versioni successive, le finestre possono essere spostati nella parte superiore dell'ordine Z ed essere bloccate per impostare gli stili WS_EX_TOPMOST.Tale finestra in primo piano gestisce la posizione in primo piano anche quando disattivata.Ad esempio, selezionare il WinHelp sempre su comando superiore della finestra della Guida in primo piano e quindi rimane visibile quando si torna all'applicazione.

Per creare una finestra, una chiamata in primo piano SetWindowPos con il parametro pWndInsertAfter uguale a &wndTopMost, o impostare lo stile WS_EX_TOPMOST quando si crea la finestra.

Se l'ordine Z contiene le finestre con lo stile WS_EX_TOPMOST, una finestra spostata con il valore &wndTopMost viene posizionata nella parte superiore delle finestre non in primo piano, ma in tutte le finestre in primo piano.Quando un'applicazione attiva una finestra inattiva senza il bit WS_EX_TOPMOST, la finestra è soprattutto windows non in primo piano si sposta ma in tutte le finestre in primo piano.

Se SetWindowPos viene chiamato quando il parametro pWndInsertAfter è &wndBottom e CWnd è una finestra in primo piano, la finestra non lo stato in primo piano (WS_EX_TOPMOST viene deselezionato) e il sistema posiziona la finestra nella parte inferiore dell'ordine Z.

Esempio

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);
}

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe CWnd

Grafico della gerarchia

DeferWindowPos

SetWindowPos