Bonjour,

J'ai programmé un petit code qui demande à l'utilisateur d'entrer un mot de passe. Ensuite, l'utilisateur clique sur le bouton "Valider" et le programme vérifie si le mot de passe saisi est valide et affiche "Autorisé" sinon "Non autorisé". Mais à la place d'afficher cela j'aimerais ouvrir une boite de message ou il serait affiché "Autorisé" ou "Non autorisé".
Je sais comment créer une boite de message mais mon problème vient, à mon avis, de la fonction g_signal_connect.

Car si je met :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
g_signal_connect(G_OBJECT(ptgui->ptbouton[1]), "clicked", G_CALLBACK(Pass), (gpointer *) ptgui);
la vérification de l'exactitude du mot de passe se passe bien mais l'ouverture de la boite de message ne fonctionne pas.

Et si je met :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
g_signal_connect(G_OBJECT(ptgui->ptbouton[1]), "clicked", G_CALLBACK(Pass), (GtkWidget *) ptgui->ptfenetre);
c'est l'inverse

Merci

Code entier :
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<gtk/gtk.h>
 
struct GUI { GtkWidget *ptfenetre;
			 GtkWidget *ptbox;
			 GtkWidget *ptframe;
			 GtkWidget *ptboxframe;
			 GtkWidget *ptentry;
			 GtkWidget *ptbouton[2];
			 GtkWidget *pttexte;
			 GtkWidget *ptboite;
};
 
void CreationGUI(struct GUI *);
void Pass(struct GUI *, gpointer);
 
void main(int argc, char **argv)
{
	struct GUI *ptgui;
 
	gtk_init(&argc, &argv);
 
	ptgui = (GUI *)malloc(sizeof(struct GUI));
 
	CreationGUI(ptgui);
}
 
void CreationGUI(struct GUI *ptgui)
{
	ptgui->ptfenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(ptgui->ptfenetre), "Dimsoft - Mot de passe");
	gtk_container_set_border_width(GTK_CONTAINER(ptgui->ptfenetre), 5);
	gtk_window_set_default_size(GTK_WINDOW(ptgui->ptfenetre), 320, 200);
	gtk_window_set_position(GTK_WINDOW(ptgui->ptfenetre), GTK_WIN_POS_CENTER);
 
	ptgui->ptbox = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(ptgui->ptfenetre), ptgui->ptbox);
 
	ptgui->ptframe = gtk_frame_new("Entrez votre mot de passe : ");
	gtk_box_pack_start(GTK_BOX(ptgui->ptbox), ptgui->ptframe, TRUE, FALSE, 0);
 
	ptgui->ptboxframe = gtk_vbox_new(TRUE, 0);
	gtk_container_add(GTK_CONTAINER(ptgui->ptframe), ptgui->ptboxframe);
 
	ptgui->ptentry = gtk_entry_new();
	gtk_entry_set_visibility(GTK_ENTRY(ptgui->ptentry), FALSE);
	gtk_box_pack_start(GTK_BOX(ptgui->ptboxframe), ptgui->ptentry, TRUE, FALSE, 0);
 
	ptgui->pttexte = gtk_label_new(NULL);
	gtk_box_pack_start(GTK_BOX(ptgui->ptbox), ptgui->pttexte, TRUE, FALSE, 0);
 
	ptgui->ptbouton[0] = gtk_button_new_from_stock(GTK_STOCK_QUIT);
	gtk_box_pack_end(GTK_BOX(ptgui->ptbox), ptgui->ptbouton[0], FALSE, FALSE, 0);
 
	ptgui->ptbouton[1] = gtk_button_new_from_stock(GTK_STOCK_OK);
	gtk_box_pack_end(GTK_BOX(ptgui->ptbox), ptgui->ptbouton[1], FALSE, FALSE, 0);
 
	g_signal_connect(G_OBJECT(ptgui->ptfenetre), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
	g_signal_connect(G_OBJECT(ptgui->ptbouton[0]), "clicked", G_CALLBACK(gtk_main_quit), NULL);
 
	g_signal_connect(G_OBJECT(ptgui->ptbouton[1]), "clicked", G_CALLBACK(Pass), (gpointer *) ptgui);
 
	gtk_widget_show_all(ptgui->ptfenetre);
 
	gtk_main();
}
 
void Pass(struct GUI *ptgui, gpointer data)
{
	char pass[] = "1234";
	char *pt;
 
	ptgui = (GUI *) data;
 
	pt = (char *)gtk_entry_get_text(GTK_ENTRY(ptgui->ptentry));
 
	if(strcmp(pt, pass) == 0)
	{
		gtk_label_set_markup(GTK_LABEL(ptgui->pttexte), "<b>Access Granted</b>");
	}
	else
	{
		gtk_label_set_markup(GTK_LABEL(ptgui->pttexte), "<b>Access Denied</b>");
	}
 
}