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);
| 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.
| 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. |
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.
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.
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.
Panoramica di Windows, le funzioni finestra, MoveWindow, SetActiveWindow, SetForegroundWindow
Rimedio: Inserire il CD-ROM CD di MSDN Library.