Funzione SetParent (winuser.h)
Modifica la finestra padre della finestra figlio specificata.
Sintassi
HWND SetParent(
[in] HWND hWndChild,
[in, optional] HWND hWndNewParent
);
Parametri
[in] hWndChild
Tipo: HWND
Handle per la finestra figlio.
[in, optional] hWndNewParent
Tipo: HWND
Handle per la nuova finestra padre. Se questo parametro è NULL, la finestra desktop diventa la nuova finestra padre. Se questo parametro è HWND_MESSAGE, la finestra figlio diventa una finestra di sola messaggio.
Valore restituito
Tipo: HWND
Se la funzione ha esito positivo, il valore restituito è un handle per la finestra padre precedente.
Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Un'applicazione può usare la funzione SetParent per impostare la finestra padre di una finestra popup, sovrapposta o figlio.
Se la finestra identificata dal parametro hWndChild è visibile, il sistema esegue il ridisegno e l'aggiornamento appropriati.
Per motivi di compatibilità, SetParent non modifica gli stili di finestra WS_CHILD o WS_POPUP della finestra di cui viene modificato l'elemento padre. Pertanto, se hWndNewParent è NULL, è necessario cancellare anche il bit WS_CHILD e impostare lo stile WS_POPUP dopo aver chiamato SetParent. Viceversa, se hWndNewParent non è NULL e la finestra era precedentemente un elemento figlio del desktop, è necessario cancellare lo stile di WS_POPUP e impostare lo stile di WS_CHILD prima di chiamare SetParent.
Quando si modifica l'elemento padre di una finestra, è necessario sincronizzare UISTATE di entrambe le finestre. Per altre informazioni, vedere WM_CHANGEUISTATE e WM_UPDATEUISTATE.
Un comportamento imprevisto o errori può verificarsi se hWndNewParent e hWndChild sono in esecuzione in modalità di riconoscimento DPI diverse. La tabella seguente illustra questo comportamento:
Operazione | Windows 8.1 | Windows 10 (1607 e versioni precedenti) | Windows 10 (1703 e versioni successive) |
---|---|---|---|
SetParent (In-Proc) | N/D | Reimpostazione forzata (del processo corrente) | Esito negativo (ERROR_INVALID_STATE) |
SetParent (Cross-Proc) | Reimpostazione forzata (del processo della finestra figlio) | Reimpostazione forzata (del processo della finestra figlio) | Reimpostazione forzata (del processo della finestra figlio) |
Per altre informazioni sulla consapevolezza dpi, vedere la documentazione di Windows High DPI.For more information on DPI awareness, see the Windows High DPI documentation.
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-0 (introdotto in Windows 8) |
Vedi anche
Informazioni concettuali
Riferimento