Bonjour.
Je travaille actuellement avec la bibliothèque GTK+-1.2.

J'ai sur mon application une gtk_drawing_area dans laquelle je souhaite dessiner une cercle et dans ce cercle des polygones, et de plusieurs boutons servants à dessiner ces deux dernieres figures. Jusque la, aucun problème.

A partir de ce moment, j'ai déjà déclaré 4 évènements, un pour construire la drawing area lorsque je relance mon application et une pour reconstruire cette zone lorsqu'elle a été cachée par une autre fenetre ou a été sortie de l'écran, que je déclarent comme ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
gtk_signal_connect( GTK_OBJECT(aire), "configure_event", GTK_SIGNAL_FUNC (configure_event), NULL );
gtk_signal_connect( GTK_OBJECT(aire), "expose_event", GTK_SIGNAL_FUNC (expose_event), NULL );
Ensuite j'en déclare deux autres associées à mes boutons "Cercle" et "Polygone" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (creerCercle), NULL);
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (creerPoly), NULL);
J'en arrive donc à mon problème, je dessine correctement ma figure mais elle ne s'affiche que lorsque je cache la drawing area pour lancer le rafraichissement...
Voici le code de mes fonctions :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
static GdkPixmap *pixmap = NULL;
 
gint creerCercle (GtkWidget *widget, gpointer *data)
{
	gdk_draw_rectangle (pixmap, aire->style->black_gc, TRUE, 50, 50, 150, 150);	
	gdk_draw_pixmap(aire->window, aire->style->fg_gc[GTK_WIDGET_STATE (aire)], pixmap, 0, 0, 500, 500, -1, -1);
	return TRUE;
}
 
static gint configure_event(GtkWidget *aire, GdkEventConfigure *event)
{
	/*if (pixmap) //Detruit le pixmap s'il existe déjà pour le remplacer
	{
		gdk_pixmap_destroy(pixmap);
	}*/
 
	pixmap = gdk_pixmap_new(aire->window, aire->allocation.width, aire->allocation.height, -1);
	gdk_draw_rectangle (pixmap, aire->style->white_gc, TRUE, 0, 0, aire->allocation.width, aire->allocation.height);
 
	return TRUE;
}
 
static gint expose_event(GtkWidget *widget, GdkEventExpose *event)
{
	gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height);
 
	return FALSE;
}
J'ai contience que c'est ma fonction gdk_draw_pixmap qui ne marche pas dans ma fonction creerCercle, mais je ne vois pas de solution...

Merci d'avance pour votre aide !