SDK Multiplataforma en C logo

SDK Multiplataforma en C

Window

❮ Anterior
Siguiente ❯

Funciones

Window*window_create (...)
voidwindow_destroy (...)
voidwindow_OnClose (...)
voidwindow_OnMoved (...)
voidwindow_OnResize (...)
voidwindow_title (...)
voidwindow_show (...)
voidwindow_hide (...)
uint32_twindow_modal (...)
voidwindow_stop_modal (...)
voidwindow_update (...)
voidwindow_origin (...)
voidwindow_size (...)
V2Dfwindow_get_origin (...)
S2Dfwindow_get_size (...)
S2Dfwindow_get_client_size (...)
voidwindow_defbutton (...)
voidwindow_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.
  • Captura del sistema operativo Windows 3.
    Figura 1: El concepto de ventana aparece ya en los primeros sistemas gráficos.

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).

Muestra como se reparte entre los controles el exceso al tamaño al redimensionar la ventana.
Figura 2: Redimensionado de la ventana en la demo Die.

window_create ()

Crea una nueva ventana.

Window*
window_create(const uint32_t flags,
              Panel **main_panel);
flags

Combinación de valores window_flag_t.

main_panel

Panel principal, que integra el contenido de la ventana.

Retorna

La ventana recién creada.

Observaciones

El tamaño de la ventana se calculará en función del Dimensionado natural del panel principal.


window_destroy ()

Destruye la ventana y todo su contenido.

void
window_destroy(Window **window);
window

La ventana. Será puesto a NULL tras la destrucción.

Observaciones

Se destruirán recursivamente paneles, layouts y componentes.


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 '\0'.


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 (x,y) de la esquina superior-izquierda de la ventana.


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.

❮ Anterior
Siguiente ❯