Domanda

Nella programmazione Win32, qual è la differenza tra genitore di una finestra e proprietario di una finestra? Ho pensato che avevo capito, poi mi sono imbattuto in questo codice:

SetWindowLong(handle, GWL_HWNDPARENT, foo);

Questa imposta effettivamente il proprietario della finestra, non il genitore - nonostante il GWL_HWNDPARENT in uso. Sono i termini genitore / proprietario intercambiabile, o c'è in realtà una differenza?

È stato utile?

Soluzione

Il proprietario è la finestra * responsabile di un controllo o una finestra (ad esempio, responsabile della creazione / distruzione della finestra).

Parent è il prossimo-anziano finestra * a un controllo o una finestra nella catena finestra, ma in realtà non è responsabile di essa (non necessariamente preoccupate per il suo ciclo di vita, ecc). genitore di una finestra può anche essere il suo proprietario.

* Finestra vs finestra: finestra è una finestra reale visualizzata sullo schermo; la finestra è un qualsiasi oggetto con un HWND (include bottoni, pannelli, ecc).

Altri suggerimenti

proprietà è una relazione tra due finestre di livello superiore mentre Parent è una relazione tra un livello superiore e una WS_CHILD, o un altro WS_CHILD e WS_CHILD.

Il genitore di un pulsante è la forma è acceso, mentre una finestra di messaggio è di proprietà della forma che lo mostrò.

Leggi questo articolo da Microsoft Win32 finestra gerarchia e stili per ottenere una comprensione più chiara di proprietà, Parenting, ZOrder, SetWindowLong, GetWindow e tutti gli altri bit brutto delle API Win32 per la creazione di relazioni di finestra.

EDIT: Sembra che Microsoft ha preso in giù che il contenuto, qui è un altro ragionevole riassunto di proprietà / Parenting .

post sul blog di Chen è quello di leggere. Il punto chiave per me è che lo stile WS_CHILD dovrà essere utilizzata sulla finestra secondaria. Si può tentare di creare una finestra figlio e passare gestire il genitore a CreateWindow (), ma se non si ha lo stile WS_CHILD impostare le due finestre avranno il rapporto proprietario, non il / rapporto genitore figlio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top