Bonjour,
j'ai beau chercher le source du problème je ne trouve pas car mes locales sont bien en utf8.
Le programme fonctionne bien, sauf au moment d'afficher le label dans la fenêtre principale, l'affichage donne des caractère bizarres !!

Voir le code source :
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
90
 
#include <stdio.h>
#include <gtk/gtk.h>
 
gboolean CallBackOK (GtkWidget *Bouton, GtkWidget **Entries)
{
  gchar * message = NULL;
  //gchar  message[1024] = "bonjour tout le monde ";
  printf("Nom   : %s\n", gtk_entry_get_text (GTK_ENTRY (Entries[0])));
  printf("Mot de passe : %s\n", gtk_entry_get_text (GTK_ENTRY(Entries[1])));
  message =  g_strdup_printf("%s/%s",Entries[0], Entries [1]) ;
  gtk_label_set_text (GTK_LABEL (Entries[2]), message) ;
  //g_free (message) ;
  return TRUE ;
}
 
gboolean FinDialogue (GtkWidget *Dialogue, GtkWidget **Entries)
{
  g_free (Entries) ;
  //gtk_exit (0) ;
  return FALSE ;
}
 
int main(int argc, char *argv[])
{
  GtkWidget *Fenetre ;
  GtkWidget *Dialogue ;
  GtkWidget *Bouton ;
  GtkWidget *Table ;
  GtkWidget *Label ;
  GtkWidget *Glabel ;
  GtkWidget *Entry ;
  GtkWidget **Entries ;
/* initialisation de la bibliothèque */
gtk_init (&argc, &argv) ;
Glabel = gtk_label_new ("bonjour") ; ;
/* Le tableau entries contiendra des pointeurs sur les deux GtkEntries du dialogue */
Entries = g_malloc (3*sizeof(GtkWidget *)) ;
Entries [2] = Glabel ;
Fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL) ;
gtk_window_set_title (GTK_WINDOW(Fenetre), "Fenetre de connexion au serveur") ;
gtk_window_set_default_size (GTK_WINDOW (Fenetre), 500, 500) ;
/* Création de la fenêtre de dialogue */
Dialogue = gtk_dialog_new () ;
gtk_container_add (GTK_CONTAINER (Fenetre), GTK_WIDGET (Glabel)) ;
/* Le titre de la fenêtre de dialogue */
gtk_window_set_title (GTK_WINDOW(Dialogue), "Test GtkEntry") ;
/* Connexion des signaux "delete" et "destroy" */
gtk_signal_connect (GTK_OBJECT (Dialogue), "delete_event", (GtkSignalFunc)FinDialogue, (gpointer)Entries);
gtk_signal_connect (GTK_OBJECT (Dialogue), "destroy", (GtkSignalFunc)FinDialogue, (gpointer)Entries);
/* Le corps de la boîte de dialogue est occupé par une table */
Table = gtk_table_new (2, 2, TRUE) ;
gtk_box_pack_start_defaults (GTK_BOX(GTK_DIALOG(Dialogue)->vbox), Table) ;
/* Le label "Nom" */
Label = gtk_label_new ("   Nom :   ") ;
gtk_table_attach_defaults (GTK_TABLE (Table), Label, 0,1,0,1) ;
/* Le GtkEntry pour le nom */
Entry = gtk_entry_new () ;
Entries [0] = Entry ;
gtk_table_attach_defaults (GTK_TABLE (Table), Entry, 1,2,0,1) ;
/* Le label "Mot de passe" */
Label = gtk_label_new ("Mot de passe :");
gtk_table_attach_defaults (GTK_TABLE (Table), Label, 0,1,1,2);
/* Le GtkEntry pour le mot de passe */
Entry =  gtk_entry_new_with_max_length(8);
Entries[1] = Entry ;
gtk_entry_set_visibility (GTK_ENTRY (Entry), FALSE) ;
gtk_table_attach_defaults (GTK_TABLE (Table), Entry, 1,2,1,2) ;
 
/* Les boutons de la boîte de dialogue */
 
/*Le bouton OK */
Bouton =  gtk_button_new_with_label ("OK") ;
gtk_signal_connect (GTK_OBJECT (Bouton), "clicked", (GtkSignalFunc)CallBackOK, (gpointer)Entries) ;
GTK_WIDGET_SET_FLAGS (Bouton, GTK_CAN_DEFAULT) ;
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (Dialogue)->action_area), Bouton, TRUE, TRUE, 0) ;
gtk_widget_grab_default (Bouton) ;
 
/* Le bouton Annuler */
Bouton = gtk_button_new_with_label ("Annuler") ;
gtk_signal_connect_object (GTK_OBJECT (Bouton), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (Dialogue)) ;
GTK_WIDGET_SET_FLAGS (Bouton, GTK_CAN_DEFAULT);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (Dialogue)->action_area), Bouton, TRUE, TRUE, 0) ;
/* On affiche le tout */
gtk_widget_show_all (Fenetre) ;
gtk_widget_show_all (Dialogue) ;
/* La boucle principale */
gtk_main () ;
return 0 ;
}