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

GetParent

Riferimento

Windows