SetWindowPos

La funzione SetWindowPos cambia la dimensione, la posizione e l'ordine z di una finestra di pop-up, o livello superiore del bambino. Bambino, finestre pop-up e di primo livello sono ordinate secondo la loro apparizione sullo schermo. La finestra in primo piano riceve il grado più alto ed è la prima finestra nell'ordine z.

 (BOOL SetWindowPos HWND  hWnd, / / handle alla finestraHWNDhWndInsertAfter, / / handle collocamento-ordineint X, / / orizzontale posizioneint Y, / / verticale posizione int cx, // width int cy, // heightUINTuFlags / / finestra di posizionamento flags);
 

Parametri

hWnd
Gestire alla finestra.
hWndInsertAfter
Gestire alla finestra per far precedere la finestra posizionata nell'ordine Z. Questo parametro deve essere un handle di finestra o uno dei seguenti valori:
Valore Significato
HWND_BOTTOM Posiziona la finestra nella parte inferiore dell'ordine Z. Se il parametro hWnd identifica una finestra in primo piano, la finestra perde il suo status di primo piano e viene posto in fondo a tutte le altre finestre.
HWND_NOTOPMOST Posiziona la finestra windows soprattutto non in primo piano (che è, dietro tutte le finestre del primo piano). Questo flag non ha alcun effetto se la finestra è già una finestra non in primo piano.
HWND_TOP Posiziona la finestra nella parte superiore dell'ordine z.
HWND_TOPMOST Posiziona la finestra windows soprattutto non in primo piano. La finestra mantiene la sua posizione in primo piano anche quando esso è disattivato.

Per ulteriori informazioni su come viene utilizzato questo parametro, vedere la sezione Osservazioni seguente.

X
Specifica la nuova posizione del lato sinistro della finestra, in coordinate del client.
Y
Specifica la nuova posizione della parte superiore della finestra, in coordinate del client.
cx
Specifica la nuova larghezza della finestra in pixel.
cy
Specifica la nuova altezza della finestra in pixel.
uFlags
Specifica la finestra dimensionamento e posizionamento bandiere. Questo parametro può essere una combinazione dei seguenti valori:
Valore Significato
SWP_ASYNCWINDOWPOS Se il thread chiamante non possiede la finestra, il sistema invia la richiesta al thread che possiede la finestra. Ciò impedisce il thread chiamante di bloccarne l'esecuzione, mentre altri thread elaborare la richiesta.
SWP_DEFERERASE Impedisce la generazione del messaggio WM_SYNCPAINT.
SWP_DRAWFRAME Disegna un frame (definito nella descrizione della classe della finestra) intorno alla finestra.
SWP_FRAMECHANGED Invia un messaggio WM_NCCALCSIZE alla finestra, anche se le dimensioni della finestra non viene modificato. Se questo flag non è specificato, WM_NCCALCSIZE viene inviato solo quando la dimensione della finestra viene modificato.
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 o non in primo piano (a seconda dell'impostazione del parametro hWndInsertAfter ).
SWP_NOCOPYBITS Elimina tutto il contenuto dell'area client. Se questo flag non è specificato, i contenuti validi dell'area client sono salvati e copiati nuovamente dentro l'area client dopo che la finestra è di dimensioni o riposizionata.
SWP_NOMOVE Mantiene la posizione corrente (ignora i parametri x e Y ).
SWP_NOOWNERZORDER Non cambia la posizione della finestra proprietario nell'ordine z.
SWP_NOREDRAW Non ridisegnare le modifiche. Se questo flag è impostato, non riverniciatura di qualsiasi tipo si verifica. Questo vale per l'area client, dimensioni dell'area (compresa la barra del titolo e barre di scorrimento) e qualsiasi parte della finestra padre scoperto come risultato della finestra viene spostata. Quando questo flag è impostato, l'applicazione deve esplicitamente invalidare o ridisegnare tutte le parti della finestra e finestra padre che hanno bisogno di ridisegno.
SWP_NOREPOSITION Come la bandiera SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Impedisce la finestra di ricezione del messaggio WM_WINDOWPOSCHANGING.
SWP_NOSIZE Mantiene la dimensione corrente (ignora i parametri cx e cy ).
SWP_NOZORDER Mantiene l'ordine z corrente (ignora il parametro hWndInsertAfter ).
SWP_SHOWWINDOW Viene visualizzata la finestra.

Valori restituiti

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni di errore estese, chiamare GetLastError.

Osservazioni

Se è impostato il flag SWP_SHOWWINDOW o SWP_HIDEWINDOW, la finestra non può essere spostata o dimensioni.

Se è stato modificato alcuni dati di finestra utilizzando SetWindowLong, è necessario chiamare SetWindowPos per avere le modifiche abbiano effetto. Utilizzare la seguente combinazione per uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

Una finestra può essere fatta una finestra in primo piano impostando il parametro hWndInsertAfter per HWND_TOPMOST e garantire che non è impostato il flag SWP_NOZORDER oppure impostando posizione di una finestra nell'ordine z in modo che sia di sopra di tutte le finestre del primo piano esistente. Quando una finestra non in primo piano viene effettuata in primo piano, le finestre di proprietà sono effettuate anche in primo piano. I suoi proprietari, tuttavia, non vengono modificate.

Se è specificato il flag né SWP_NOACTIVATE né SWP_NOZORDER (cioè quando l'applicazione richiede che una finestra contemporaneamente essere attivato e sua posizione nell'ordine z modificata), il valore specificato in hWndInsertAfter viene utilizzato solo nelle seguenti circostanze:

Un'applicazione non può attivare una finestra inattiva senza portandola anche alla parte superiore dell'ordine Z. Applicazioni possono cambiare la posizione della finestra attivato nell'ordine z senza restrizioni, oppure può attivare una finestra e quindi spostare verso l'alto delle finestre in primo piano o non in primo piano.

Se una finestra in primo piano viene riposizionata verso il basso (HWND_BOTTOM) dell'ordine z o dopo qualsiasi finestra non in primo piano, non è più in primo piano. Quando una finestra in primo piano viene effettuata non in primo piano, i suoi proprietari e le sue finestre di proprietà sono anche fatti non in primo piano windows.

Una finestra non in primo piano può possedere una finestra in primo piano, ma il contrario non può accadere. Qualsiasi finestra (ad esempio, una casella di dialogo), di proprietà di una finestra in primo piano è di per sé ha fatto una finestra in primo piano, per garantire che tutte le proprietà di windows rimanere di sopra di loro proprietario.

Se un'applicazione non è in primo piano e dovrebbe essere in primo piano, è necessario chiamare la funzione SetForegroundWindow.

Windows CE: Se questa è una finestra di primo livello visibile e non viene specificato il flag SWP_NOACTIVATE, questa funzione attiverà la finestra. Se questa è la finestra attiva, e la bandiera SWP_NOACTIVATE o il flag SWP_HIDEWINDOW viene specificato, l'attivazione è passato a un'altra finestra di primo livello visibile.

Quando si imposta il flag SWP_FRAMECHANGED nel parametro nFlags a questa funzione, Windows CE: ridisegna l'intera area non client della finestra, che possa cambiare le dimensioni dell'area client. Questo è l'unico modo per ottenere l'area client non vengono ricalcolate e viene in genere utilizzato dopo un che hai cambiato lo stile della finestra chiamando SetWindowLong.

SetWindowPos sempre causerà un messaggio WM_WINDOWPOSCHANGED essere inviato alla finestra. Il flag passati in questo messaggio sono esattamente gli stessi di quelli passati nella funzione. No altri messaggi sono inviati da questa funzione.

Windows CE 1.0 non supporta le costanti HWND_TOPMOST e HWND_NOTOPMOST nel parametro hwndInsertAfter.

Windows CE 1.0 non supporta il flag SWP_DRAWFRAME o SWP_NOCOPYBITS in paramete la fuFlags.

Descrizione

nbsp; Windows &NT: richiede 3.1 o versione successiva.
Windows:Richiede Windows 95 o versioni successive.
Windows CE:Richiede la versione 1.0 o successiva.
Intestazione:Dichiarati in winuser.
Importare librerie:Utilizzare user32.lib.

Vedi anche

Panoramica di Windows, le funzioni finestra, MoveWindow, SetActiveWindow, SetForegroundWindow

Rimedio: Inserire il CD-ROM CD di MSDN Library.

Index