winapi window parent owner

winapi - Win32 ventana Propietario vs ventana Padre?



window parent (3)

El propietario es la ventana * responsable de un control o diálogo (por ejemplo, responsable de crear / destruir la ventana).

Parent es la ventana de next-senior * para un control o diálogo en la cadena de ventanas, pero en realidad no es responsable de ello (no necesariamente se preocupa por su ciclo de vida, etc.). El padre de una ventana también puede ser su dueño.

* Ventana vs ventana: Ventana es una ventana real que se muestra en la pantalla; ventana es cualquier objeto con un HWND (incluye botones, paneles, etc.).

En la programación de Win32, ¿cuál es la diferencia entre el padre de una ventana y el propietario de una ventana? Pensé que lo había resuelto, luego me encontré con este código:

SetWindowLong(handle, GWL_HWNDPARENT, foo);

De hecho, esto configura al propietario de la ventana, no al padre, a pesar de que se utiliza GWL_HWNDPARENT. ¿Los términos padre / propietario son intercambiables, o hay realmente una diferencia?


La propiedad es una relación entre dos ventanas de nivel superior, mientras que Parent es una relación entre un nivel superior y un WS_CHILD, o un WS_CHILD y otro WS_CHILD.

El padre de un botón es el formulario en el que está, mientras que un cuadro de mensaje es propiedad del formulario que lo mostró.

Lea este artículo de Microsoft Win32 Jerarquía de ventanas y estilos para obtener una comprensión mucho más clara de Propiedad, Crianza de los hijos, ZOrder, SetWindowLong, GetWindow y todos los otros pedazos desagradables de la API de Win32 para crear relaciones de ventana.

EDITAR: Parece que Microsoft eliminó ese contenido, aquí hay otro resumen razonable de Propiedad / Crianza .


La publicación del blog de Chen es la que hay que leer. El punto clave para mí es que el estilo WS_CHILD se debe usar en la ventana secundaria. Puede intentar crear una ventana secundaria y pasar el manejador principal a CreateWindow (), pero si no tiene configurado el estilo WS_CHILD, las dos ventanas tendrán la relación de propietario, no la relación padre / hijo.