Eventos de la creación de las ventanas en Windows.

Iniciado por androidnyc, Marzo 16, 2016, 07:46:41 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola buenos días,

Tengo una ventana en java y me gustaría saber que le envía al sistema operativo windows para que se cree esa ventana, y no me refiero
al onCreate() sino a nivel mas bajo de programación, que es lo que recibe el sistema Operativo. Sería posible poder capturarlo desde fuera
de la aplicación ese evento de creación de la ventana?


Un saludo, gracias.

Este ejemplo abrirá una ventana en el escritorio con un solo botón. Capturará los eventos para cerrar la ventana y mostrará un mensaje en consola para demostrarlo. Al pulsar el botón mostrará el mensaje "Hola Mundo" y se cerrará.

Es un ejemplo básico para comprobar como crear una ventana, un componente gráfico, cómo capturar eventos y asociarlos a una función.

Para compilar este ejemplo es necesatio tener instaladas las librerias gtk 2.0 y las cabeceras. En debian o ubunto eso se hace instalando el paquete libgtk2.0-dev. Ahora, lo compilas y ejecutas con las siguientes lineas:
$ gcc ventanagtk.c -o ventanagtk `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
$ ./ventanagtk
Los comandos pkg-config devuelven los includes y librerias que hay que indicar al compilador para compilar con gtk. Esto te ahorra especificar los includes y librerias manualmente.



Código: php
1: #include <gtk/gtk.h>

  3: /* Función respuesta para dar el mensaje en el botón. */
  4: static void hello( GtkWidget *widget,
  5:                    gpointer   data )
  6: {
  7:     g_print ("Hola Mundo\n");
  8: }

10: static gboolean delete_event( GtkWidget *widget,
11:                               GdkEvent  *event,
12:                               gpointer   data )
13: {
14:     
15: /* Si devuelves FALSE en el manejador de este evento hará que la
16: ventana se destruya. Si devuelves TRUE cancelaras el cierre de la
17: ventana. Esto te permite abortar intentos de cerrar la ventana. */

19:     g_print ("Capturado evento delete\n");
20:     return TRUE;
21: }

23: /* Función callback para la acción del botón.*/
24: static void destroy( GtkWidget *widget,
25:                      gpointer   data )
26: {
27:     gtk_main_quit ();
28: }

30: int main( int   argc,
31:           char *argv[] )
32: {
33:     /* GtkWidget es el tipo de datos para todos los Widgets*/
34:     GtkWidget *window;
35:     GtkWidget *button;
36:     
37:     /* Todas las aplicaciones que usan GTK deben llamar a esta función.
38: Sirve para que la libreria gtk se inicialice y compruebe los argumentos
39: en linea de comandos destinados a ella. */
40:     gtk_init (&argc, &argv);
41:     
42:     /* Creamos una nueva ventana en el escritorio.*/
43:     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
44:     
45: /* la función signal_connect hace que cada vez que el objeto incicado reciba un evento
46: del tipo indicado, se llame a la función que se indica.*/

48: /* El evento "delete" se produce al indicar al gestor de ventanas que cierre
49: la ventana (normalmente con un botón con una X. En este caso lo asociamos con
50: una función que captura el evento, da un mensaje en consola y evita el cierre
51: de la ventana. */
52:     g_signal_connect (G_OBJECT (window), "delete_event",
53:                       G_CALLBACK (delete_event), NULL);
54:     
55: /* El evento destroy se produce al llamar a la fuciónn para destruir un widget.
56: Aquí lo conectamos a una función que cerrará el programa.*/

58:     g_signal_connect (G_OBJECT (window), "destroy",
59:                       G_CALLBACK (destroy), NULL);
60:     
61: /* Esto establece el ancho del borde de la ventana. */
62:     gtk_container_set_border_width (GTK_CONTAINER (window), 10);
63:     
64: /* Creamos un nuevo botón. */
65:     button = gtk_button_new_with_label ("Hola Mundo");
66:     
67: /* Conectamos el evento click de este botón, con la función que escribe
68: en consola el mensaje "Hola Mundo" */
69:     g_signal_connect (G_OBJECT (button), "clicked",
70:                       G_CALLBACK (hello), NULL);
71:     
72: /* Conectamos el evento click de este botón con la llamada a destruir
73: el widget de la ventana principal.*/
74:     g_signal_connect_swapped (G_OBJECT (button), "clicked",
75:                               G_CALLBACK (gtk_widget_destroy),
76:                               G_OBJECT (window));
77:     
78: /* Metemos el botón en la ventana. */
79:     gtk_container_add (GTK_CONTAINER (window), button);
80:     
81: /* Indicamos que se muestre el botón. */
82:     gtk_widget_show (button);
83:     
84: /* y la ventana */
85:     gtk_widget_show (window);
86:     
87:     /* Entramos en el bucle de eventos, donde toda aplicación orientada a eventos
88: debería entrar. */
89:     gtk_main ();
90:     
91:     return 0;
92: }


Suerte :)

No se mucho pero me imagino que usa esto No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


para capturarlo yo googlearia algo asi:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta