1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
   | #include <stdlib.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <cairo.h>
 
 
 
gboolean on_draw (GtkWidget *widget, GdkEventExpose *event, gpointer data) 
{
 
  cairo_t *cr = gdk_cairo_create (gtk_widget_get_window(widget));
  GdkRectangle da;           //Dimensions de la GtkDrawingArea */
 
  /* bizarrement il n'y a pas le paramètre depth comme marqué dans le manuel officiel... */
  gdk_window_get_geometry (gtk_widget_get_window(widget), &da.x, &da.y, &da.width, &da.height);
 
  /* affiche dans la console les dimension de ma GTK_GRID */
  printf("x = %d, y = %d, width = %d, height = %d\n", da.x, da.y, da.width, da.height);
 
  cairo_set_source_rgb (cr, 0.0 , 0.0 , 0.0); //fond noir
  cairo_paint (cr);
 
  cairo_destroy (cr);
  return FALSE;
}
 
 
int main (int argc, char * argv [])
{
  GtkWidget * win;
  GtkWidget * area;
  GtkWidget * table;
 
  gtk_init (& argc, & argv);
 
 
  /* description de la fenetre */
  win= gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (win, 800, 600);
  g_signal_connect (G_OBJECT(win), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
  /* Créatione st insertion de zone de dessin dans la table */
  table = gtk_grid_new();
  gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(table));
 
  /* Création de la table */
  area = gtk_drawing_area_new ();
  gtk_grid_attach(GTK_GRID (table), area, 0, 0, 1, 1);
  // gtk_container_add (GTK_CONTAINER (win), area);  
 
  /* j'avais mis area au lieu de table comme premier paramètre mais 
  dans ce cas la fenetre ce colorie pas... */
  g_signal_connect (G_OBJECT (table), "draw", G_CALLBACK (on_draw), NULL);
 
  gtk_widget_show_all (win);  
  gtk_main ();
  return 0;
} | 
Partager