Funzione DeferWindowPos (winuser.h)
Aggiornamenti la struttura di più finestre specificata per la finestra specificata. La funzione restituisce quindi un handle alla struttura aggiornata. La funzione EndDeferWindowPos usa le informazioni in questa struttura per modificare la posizione e le dimensioni di un numero di finestre simultaneamente. La funzione BeginDeferWindowPos crea la struttura.
Sintassi
HDWP DeferWindowPos(
[in] HDWP hWinPosInfo,
[in] HWND hWnd,
[in, optional] HWND hWndInsertAfter,
[in] int x,
[in] int y,
[in] int cx,
[in] int cy,
[in] UINT uFlags
);
Parametri
[in] hWinPosInfo
Tipo: HDWP
Handle a una struttura a più finestre che contiene informazioni sulle dimensioni e sulla posizione per una o più finestre. Questa struttura viene restituita da BeginDeferWindowPos o dalla chiamata più recente a DeferWindowPos.
[in] hWnd
Tipo: HWND
Handle alla finestra per cui le informazioni di aggiornamento vengono archiviate nella struttura. Tutte le finestre di una finestra multipla: la struttura di posizione deve avere lo stesso elemento padre.
[in, optional] hWndInsertAfter
Tipo: HWND
Handle alla finestra che precede la finestra posizionata nell'ordine Z. Questo parametro deve essere un handle di finestra o uno dei valori seguenti. Questo parametro viene ignorato se il flag di SWP_NOZORDER è impostato nel parametro uFlags .
[in] x
Tipo: int
Coordinata x dell'angolo superiore sinistro della finestra.
[in] y
Tipo: int
Coordinata y dell'angolo superiore sinistro della finestra.
[in] cx
Tipo: int
La nuova larghezza della finestra, in pixel.
[in] cy
Tipo: int
La nuova altezza della finestra, in pixel.
[in] uFlags
Tipo: UINT
Combinazione dei valori seguenti che influiscono sulle dimensioni e sulla posizione della finestra.
Valore | Significato |
---|---|
|
Disegna un frame (definito nella descrizione della classe della finestra) intorno alla finestra. |
|
Invia un messaggio WM_NCCALCSIZE alla finestra, anche se le dimensioni della finestra non vengono modificate. Se questo flag non è specificato, WM_NCCALCSIZE viene inviato solo quando viene modificata la dimensione della finestra. |
|
Nasconde la finestra. |
|
Non attiva la finestra. Se questo flag non è impostato, la finestra viene attivata e spostata nella parte superiore del gruppo superiore o non superiore (a seconda dell'impostazione del parametro hWndInsertAfter ). |
|
Elimina l'intero contenuto dell'area client. Se questo flag non è specificato, il contenuto valido dell'area client viene salvato e copiato nell'area client dopo che la finestra viene ridimensionata o riposizionata. |
|
Mantiene la posizione corrente (ignora i parametri x e y ). |
|
Non modifica la posizione della finestra del proprietario nell'ordine Z. |
|
Non ridisegna le modifiche. Se questo flag è impostato, non si verifica alcuna riinting di qualsiasi tipo. Ciò si applica all'area client, all'area nonclient (inclusa la barra del titolo e le barre di scorrimento) e a qualsiasi parte della finestra padre individuata come risultato dello spostamento della finestra. Quando questo flag è impostato, l'applicazione deve invalidare o ridisegnare in modo esplicito tutte le parti della finestra e della finestra padre che devono essere ridisegnate. |
|
Uguale al flag di SWP_NOOWNERZORDER . |
|
Impedisce alla finestra di ricevere il messaggio di WM_WINDOWPOSCHANGING . |
|
Mantiene le dimensioni correnti (ignora i parametri cx e cy ). |
|
Mantiene l'ordine Z corrente (ignora il parametro hWndInsertAfter ). |
|
Visualizza la finestra. |
Valore restituito
Tipo: HDWP
Il valore restituito identifica la struttura di più finestre aggiornata: posizione. L'handle restituito da questa funzione può essere diverso dall'handle passato alla funzione. Il nuovo handle restituito da questa funzione deve essere passato durante la chiamata successiva alla funzione DeferWindowPos o EndDeferWindowPos .
Se le risorse di sistema insufficienti sono disponibili per la funzione, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Se una chiamata a DeferWindowPos ha esito negativo, l'applicazione deve abbandonare l'operazione di posizionamento della finestra e non chiamare EndDeferWindowPos.
Se non viene specificato SWP_NOZORDER, il sistema inserisce la finestra identificata dal parametro hWnd nella posizione che segue la finestra identificata dal parametro hWndInsertAfter . Se hWndInsertAfter è NULL o HWND_TOP, il sistema inserisce la finestra hWnd nella parte superiore dell'ordine Z. Se hWndInsertAfter è impostato su HWND_BOTTOM, il sistema inserisce la finestra hWnd nella parte inferiore dell'ordine Z.
Tutte le coordinate per le finestre figlio sono relative all'angolo superiore sinistro dell'area client della finestra padre.
Una finestra può essere impostata in alto impostando hWndInsertAfter sul flag HWND_TOPMOST e assicurando che il flag di SWP_NOZORDER non sia impostato o impostando la posizione della finestra nell'ordine Z in modo che si tratti di una finestra superiore esistente. Quando una finestra non superiore viene resa più in alto, anche le finestre di proprietà vengono rese più in alto. I proprietari, tuttavia, non vengono modificati.
Se non viene specificato né il SWP_NOACTIVATE néil flag SWP_NOZORDER (ovvero quando l'applicazione richiede che una finestra venga attivata contemporaneamente e la relativa posizione nell'ordine Z modificato), il valore specificato in hWndInsertAfter viene usato solo nelle circostanze seguenti:
- Né il flag HWND_TOPMOST néHWND_NOTOPMOST è specificato in hWndInsertAfter.
- La finestra identificata da hWnd non è la finestra attiva.
Una finestra in alto non è più in alto se viene riposizionata nella parte inferiore (HWND_BOTTOM) dell'ordine Z o dopo qualsiasi finestra non superiore. Quando una finestra in primo piano è fatta all'inizio, anche i suoi proprietari e le sue finestre di proprietà sono fatte finestre non più in alto.
Una finestra non superiore può essere proprietaria di una finestra superiore, ma non viceversa. Qualsiasi finestra ,ad esempio una finestra di dialogo, di proprietà di una finestra in alto, viene creata una finestra in alto per garantire che tutte le finestre di proprietà rimangano al di sopra del proprietario.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winuser.h (include Windows.h) |
Libreria | User32.lib |
DLL | User32.dll |
Set di API | ext-ms-win-ntuser-window-l1-1-4 (introdotto in Windows 10 versione 10.0.14393) |
Vedi anche
Informazioni concettuali
Riferimento