Bonjour la communauté.

Tout d'abord, merci à Franck pour ses explications sur mon précédent long post. (Pour info, j'ai réussi à faire ce que je voulais (charger une image et obtenir la position de la souris))

Cette fois-ci, le sujet de mon post est clair, je voudrais réaliser un décompteur de temps.

Clairement, une fois qu'une image s'affiche, je voudrais :

_soit avoir un label qui se met à jour toutes les secondes du style "il reste 5 secondes", "il reste 4 secondes", etc, en temps réel. Pendant ces 5 secondes, je veux que l'utilisateur ne puisse rien faire à part attendre. J'ai déja essayé de mettre des "sleep(1)" avec des "gtk_widget_show_all(pWindow);" un peu partout mais rien à faire : une fois que j'exécute le pgm, 5 secondes s'écoulent et je vois ma fenêtre uniquement à la fin du décompteur.

_soit éventuellement un popup qui s'ouvre et affiche pareillement "il reste x secondes" toutes les secondes. J'avoue le problème est un peu pareil, si j'arrive pas à mettre à jour un label toutes les x secondes, j'arriverai encore moins à mettre un label à jour dans un popup...

Je joints un petit bout de code (sur lequel j'ai le problème expliqué) au cas ou ca peut vosu aider...

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdlib.h>
#include <gtk/gtk.h>
 
int main(int argc,char **argv)
{
    GtkWidget* pWindow;
    GtkWidget* pLabel;
    int cpt=5 ;
    gtk_init(&argc,&argv);
    gint val;
 
    pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(pWindow), "Les labels");
    gtk_window_set_default_size(GTK_WINDOW(pWindow), 300, 300);
 
    /* Creation du label */
    pLabel=gtk_label_new("Hello World!");
 
    /* On ajoute le label a l'interieur de la fenetre */
    gtk_container_add(GTK_CONTAINER(pWindow), pLabel);
 
while ( cpt >= 0 )
{
	val = cpt;
	gchar *chaine = NULL;
 
	chaine = g_strdup_printf ("%d", val);
	gtk_label_set_label (GTK_LABEL (pLabel), chaine);
 
	gtk_widget_show_all(pWindow);
 
	sleep(1);
 
	g_free (chaine), chaine = NULL;
 
	cpt--;
}
 
    /* Affichage de la fenetre et de tout ce qu'il contient */
    gtk_widget_show_all(pWindow);
 
    /* Connexion du signal
    /* On appelle directement la fonction de sortie de boucle */
    g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
    gtk_main();
 
    return EXIT_SUCCESS;
}