Compartir a través de


¿Qué es una ventana?

¿Qué es una ventana?

Obviamente, las ventanas son centrales para Windows. Son tan importantes que denominan el sistema operativo después de ellos. ¿Pero qué es una ventana? Cuando piensas en una ventana, probablemente pienses en algo parecido a esto:

captura de pantalla de una ventana de aplicación

Este tipo de ventana se denomina ventana de aplicación o ventana principal. Normalmente tiene un marco con una barra de título, botones Minimizar y Maximizar y otros elementos estándar de la interfaz de usuario. El marco se denomina área que no es cliente de la ventana, denominada porque el sistema operativo administra esa parte de la ventana. El área dentro del marco es el área cliente. Esta es la parte de la ventana que administra el programa.

Este es otro tipo de ventana:

captura de pantalla de una ventana de control

Si no está familiarizado con la programación de Windows, puede sorprenderle que los controles de la interfaz de usuario, como botones y cuadros de edición, sean ventanas. La diferencia principal entre un control de interfaz de usuario y una ventana de aplicación es que un control no existe por sí mismo. En su lugar, el control se coloca en relación con la ventana de la aplicación. Al arrastrar la ventana de la aplicación, el control se mueve con él, como cabría esperar. Además, el control y la ventana de la aplicación pueden comunicarse entre sí. (Por ejemplo, la ventana de la aplicación recibe notificaciones de clic de un botón).

Por lo tanto, cuando piense en la ventana, no piense simplemente en la ventana de la aplicación. En su lugar, piense en una ventana como una construcción de programación que:

  • Ocupa una parte determinada de la pantalla.
  • Puede o no estar visible en un momento dado.
  • Sabe cómo dibujarse.
  • Responde a eventos del usuario o del sistema operativo.

Ventanas primarias y Ventanas propietarias

En el caso de un control de interfaz de usuario, se dice que la ventana de control es la secundaria de la ventana de la aplicación. La ventana de la aplicación es el elemento primario de la ventana de control. La ventana primaria proporciona el sistema de coordenadas que se usa para colocar una ventana secundaria. Tener una ventana primaria afecta a aspectos de la apariencia de una ventana; por ejemplo, se recorta una ventana secundaria para que ninguna parte de la ventana secundaria pueda aparecer fuera de los bordes de su ventana primaria.

Otra relación es la relación entre una ventana de aplicación y una ventana de diálogo modal. Cuando una aplicación muestra un cuadro de diálogo modal, la ventana de la aplicación es la ventana de propietario y el diálogo es una ventana propiedad . Una ventana propiedad siempre aparece delante de su ventana de propietario. Se oculta cuando se minimiza el propietario y se destruye al mismo tiempo que el propietario.

En la imagen siguiente se muestra una aplicación que muestra un cuadro de diálogo con dos botones:

captura de pantalla de una aplicación con un cuadro de diálogo

La ventana de la aplicación posee la ventana de diálogo y la ventana de diálogo es el elemento primario de ambas ventanas de botón. En el diagrama siguiente se muestran estas relaciones:

Ilustración en la que se muestran las relaciones de los padres, los elementos primarios, secundarios y propietarios o propietarios

Identificadores de ventana

Windows son objetos , tienen código y datos, pero no son clases de C++. En su lugar, un programa hace referencia a una ventana mediante un valor denominado identificador. Un identificador es un tipo opaco. Básicamente, es solo un número que el sistema operativo usa para identificar un objeto. Puede hacer una imagen de Windows como tener una tabla grande de todas las ventanas que se han creado. Usa esta tabla para buscar ventanas mediante sus identificadores. (Si eso es exactamente cómo funciona internamente no es importante). El tipo de datos de los identificadores de ventana es HWND, que normalmente se pronuncia "aitch-wind". Las funciones que crean ventanas devuelven los identificadores de ventana: CreateWindow y CreateWindowEx.

Para realizar una operación en una ventana, normalmente llamará a alguna función que toma un valor HWND como parámetro. Por ejemplo, para cambiar la posición de una ventana en la pantalla, llame a la función MoveWindow :

BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);

El primer parámetro es el identificador de la ventana que desea mover. Los demás parámetros especifican la nueva ubicación de la ventana y si se debe volver a dibujar la ventana.

Tenga en cuenta que los identificadores no son punteros. Si hwnd es una variable que contiene un identificador, intentar desreferenciar el identificador escribiendo *hwnd es un error.

Coordenadas de pantalla y ventana

Las coordenadas se miden en píxeles independientes del dispositivo. Tendremos más que decir sobre la parte independiente del dispositivo de píxeles independientes del dispositivo al analizar los gráficos.

En función de la tarea, puede medir las coordenadas relativas a la pantalla, en relación con una ventana (incluido el marco) o en relación con el área cliente de una ventana. Por ejemplo, colocaría una ventana en la pantalla mediante coordenadas de pantalla, pero dibujaría dentro de una ventana mediante coordenadas de cliente. En cada caso, el origen (0, 0) siempre es la esquina superior izquierda de la región.

ilustración en la que se muestran las coordenadas de pantalla, ventana y cliente

Siguientes

WinMain: el punto de entrada de la aplicación