Window
Funciones
Window* | window_create (...) |
void | window_destroy (...) |
void | window_panel (...) |
void | window_OnClose (...) |
void | window_OnMoved (...) |
void | window_OnResize (...) |
void | window_title (...) |
void | window_show (...) |
void | window_hide (...) |
uint32_t | window_modal (...) |
void | window_stop_modal (...) |
void | window_update (...) |
void | window_origin (...) |
void | window_size (...) |
V2Df | window_get_origin (...) |
S2Df | window_get_size (...) |
S2Df | window_get_client_size (...) |
void | window_defbutton (...) |
void | window_cursor (...) |
Los objetos Window son los contenedores de más alto nivel dentro de la interfaz de usuario (Figura 1). Están compuestas por la barra de título, donde se ubican los botones de cerrar, maximizar y minimizar, la zona interior y el marco. Si la ventana admite redimensionado, dicho marco podrá ser arrastrado con el ratón para cambiar su tamaño. La zona interior o área cliente de la ventana, se configura mediante un Panel pasado como parámetro del constructor.
- Utiliza window_create para crear una ventana.

1. Tamaño de la ventana
En principio, el tamaño de la ventana se calcula automáticamente en función del Dimensionado natural de su panel principal, pero puede cambiarse en cualquier momento.
- Utiliza window_size para cambiar el tamaño del panel principal.
- Utiliza ekWNRES para crear una ventana redimensionable por el usuario.
El cambio en las dimensiones del área cliente lleva implícita una re-ubicación y re-dimensionado de los controles interiores. Esto se gestiona automáticamente por los objetos Layout en función de como se haya configurado su Expansión de celdas, que se propagará de manera recursiva por todos los sublayouts. En Die tienes un ejemplo del redimensionado de una ventana (Figura 2).
2. Cierre de la ventana.
TODO

window_create ()
Crea una nueva ventana.
Window* window_create(const uint32_t flags);
flags | Combinación de valores window_flag_t. |
Retorna
La ventana recién creada.
window_destroy ()
Destruye la ventana y todo su contenido.
void window_destroy(Window **window);
window | La ventana. Será puesto a |
Observaciones
Se destruirán recursivamente paneles, layouts y componentes.
window_panel ()
Asocia el panel principal a una ventana.
void window_panel(Window *window, Panel *panel);
window | La ventana. |
panel | Panel principal, que integra todo el contenido de la ventana (vistas, controles, etc). |
Observaciones
El tamaño de la ventana se ajustará en función del Dimensionado natural del panel principal.
window_OnClose ()
Establece un manejador para el evento de cierre de la ventana.
void window_OnClose(Window *window, Listener *listener);
1 2 3 4 5 6 7 8 9 10 11 |
static void i_OnClose(App *app, Event *e) { const EvWinClose *params = event_params(e, EvWinClose); if (can_close(app, params->origin) == FALSE) { bool_t *result = event_result(e, bool_t); *result = FALSE; } } ... window_OnClose(window, listener(app, i_OnClose, App)); |
window | La ventana. |
listener | Función callback que se llamará antes de cerrar una ventana. |
Observaciones
Si por cualquier motivo la ventana no debe cerrarse, se debe devolver FALSE
como resultado del evento. Ver Eventos GUI.
window_OnMoved ()
Establece un manejador para el desplazamiento de la ventana por el escritorio.
void window_OnMoved(Window *window, Listener *listener);
window | La ventana. |
listener | Función callback que se llamará a medida que se arrastre la barra de título y se mueva la ventana por el escritorio. |
Observaciones
Ver Eventos GUI.
window_OnResize ()
Establece un manejador para el redimensionado de la ventana.
void window_OnResize(Window *window, Listener *listener);
window | La ventana. |
listener | Función callback que se llamará a medida que se arrastren los bordes externos de la ventana para cambiar su tamaño. |
Observaciones
El redimensionado y rehubicación de elementos se realiza de forma automática en función del Layout principal, por lo que no suele ser necesario que la aplicación responda a este evento. Ver Eventos GUI.
window_title ()
Establece el texto que mostrará la ventana en la barra de título.
void window_title(Window *window, const char_t *text);
window | La ventana. |
text | Cadena C UTF8 terminada en carácter nulo |
window_show ()
Muestra la ventana. Por defecto las ventanas se crean ocultas. Hay que mostrarlas explícitamente.
void window_show(Window *window);
window | La ventana. |
window_hide ()
Oculta la ventana.
void window_hide(Window *window);
window | La ventana. |
window_modal ()
Lanza una ventana en modo modal.
uint32_t window_modal(Window *window, Window *parent);
window | La ventana. |
parent | La ventana bloqueada. |
Retorna
Valor retornado por window_stop_modal.
Observaciones
parent
dejará de recibir eventos hasta que no se llame a window_stop_modal.
window_stop_modal ()
Termina el ciclo modal de una ventana.
void window_stop_modal(Window *window, const uint32_t return_value);
window | La ventana lanzada previamente con window_modal. |
return_value | Valor que deberá devolver window_modal. |
window_update ()
Recalcula la posición y tamaño de los controles tras modificar cualquier Layout.
void window_update(Window *window);
window | La ventana. |
window_origin ()
Mueve la ventana a unas coordenadas concretas del escritorio.
void window_origin(Window *window, const V2Df origin);
window | La ventana. |
origin | Posición |
window_size ()
Establece el tamaño del área cliente de la ventana.
void window_size(Window *window, const S2Df size);
window | La ventana. |
size | Tamaño del panel principal. |
Observaciones
El tamaño final dependerá de la configuración del marco de la ventana y del tema de escritorio. Esta medida solo hace referencia al área interior.
window_get_origin ()
Obtiene la posición de la ventana.
V2Df window_get_origin(const Window *window);
window | La ventana. |
Retorna
Posición (x,y)
de la esquina superior-izquierda de la ventana.
window_get_size ()
Obtiene las dimensiones totales de la ventana.
S2Df window_get_size(const Window *window);
window | La ventana. |
Retorna
Tamaño de la ventana.
Observaciones
Se tiene en cuenta el marco y barra de título.
window_get_client_size ()
Obtiene las dimensiones del área cliente de la ventana.
S2Df window_get_client_size(const Window *window);
window | La ventana. |
Retorna
Tamaño del panel principal.
window_defbutton ()
Establece el botón por defecto de la ventana. Será activado cuando se pulse [Intro]
.
void window_defbutton(Window *window, Button *button);
window | La ventana. |
button | El botón. |
window_cursor ()
Cambia el cursor del ratón.
void window_cursor(Window *window, const cursor_t cursor, const Image *image, const real32_t hot_x, const real32_t hot_y);
window | La ventana. |
cursor | Identificador del nuevo cursor. |
image | Imagen personalizada. Solo válido en ekCUSER. |
hot_x | Coordenada x del punto de clic. Solo válido en ekCUSER. |
hot_y | Coordenada y del punto de clic. Solo válido en ekCUSER. |
Observaciones
hot_x, hot_y
indican el punto "sensible" dentro de la imagen, que indicará la posición exacta del ratón.