Re voila, alors c'est un problème mineur, mais génant, mon programme (comme les habitués de mes lectures le savent) lit le port série, et, ma fenetre principale "disparait" tant que rien n'est détecté sur le port série. Petit exemple :

je lance mon programme, je choisis le mode automatique, ma fenetre disparait, je ne fais rien, elle réapparait pas, je passe un badge, elle trouve des données sur le port série, elle réapparait. Mais la question est pourquoi disparait-elle? je met le code, ce sera plus simple je pense pour trouver "le coupable" (il est un peu long ^^)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
 
//**********************************************************************************************/
//                                                                                             //
//                  C R E A T I O N    D U    M E N U    A U T O M A T I Q U E                 //
//                                                                                             //
//**********************************************************************************************/
void ModeAuto(GtkWidget *widget, gpointer data, GtkWidget * MainWindow, GtkWidget * WindowManu)
{    
    gtk_widget_destroy(MainWindow);
    gtk_widget_destroy(WindowManu);
    /* Variables */
    GtkWidget * WindowAuto = NULL;
    GtkWidget * LabelGeneral = NULL;
    GtkWidget * LabelNomM = NULL;
    GtkWidget * LabelPrenomM = NULL;
    GtkWidget * LabelNoBadgeM = NULL;
    GtkWidget * LabelSoldeM = NULL;
    GtkWidget * LabelNbRepM = NULL;
    GtkWidget * LabelNbReloadM = NULL;
    GtkWidget * Layout = NULL;
    GtkWidget * pButton[4];
    /* Création de la fenêtre */
    WindowAuto = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect(G_OBJECT(WindowAuto), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
    gtk_window_set_title(GTK_WINDOW(WindowAuto), "Mode Automatique");
    gtk_window_set_default_size(GTK_WINDOW(WindowAuto), 1024, 768);
    gtk_window_set_position(GTK_WINDOW(WindowAuto), GTK_WIN_POS_CENTER);
    Layout = gtk_layout_new (NULL,NULL);
    gtk_container_add(GTK_CONTAINER(WindowAuto), GTK_WIDGET(Layout));
    /*Couleur bleu pale du layout*/
    	GdkColor color;
	//RGB(246^2,249^2,252^2)
	color.pixel = 0;
	color.red=60516;
	color.green=62001;
	color.blue=63504;
	gtk_widget_modify_bg(GTK_WIDGET(Layout), GTK_STATE_NORMAL, &color);
//Création du "menu"
    /* Creation des boutons */
    pButton[0] = gtk_button_new_with_label("Mode Manu");
    pButton[1] = gtk_button_new_with_label("Retour Accueil");
    pButton[2] = gtk_button_new_with_label("Quitter");
    pButton[3] = gtk_button_new_with_label("Valider");
    /* Positionnement des Boutons */
    gtk_layout_put (GTK_LAYOUT(Layout),pButton[3],500,400);
    gtk_layout_put (GTK_LAYOUT(Layout),pButton[1],600,400);
    gtk_layout_put (GTK_LAYOUT(Layout),pButton[0],500,450);
    gtk_layout_put (GTK_LAYOUT(Layout),pButton[2],600,450);
    /* Création des labels */
    LabelGeneral = gtk_label_new("");
    LabelNomM = gtk_label_new("");
    LabelPrenomM = gtk_label_new("");
    LabelNoBadgeM = gtk_label_new("");
    LabelSoldeM = gtk_label_new("");
    LabelNbRepM = gtk_label_new("");
    LabelNbReloadM = gtk_label_new("");
    /* Initialisation des labels */
    gtk_label_set_markup(GTK_LABEL(LabelGeneral), "<span font_desc=\"Times New Roman italic 48\"foreground=\"#0000FF\">Mode Automatique</span>\n");
    gtk_label_set_markup(GTK_LABEL(LabelNomM), "<span font_desc=\"Times New Roman 12\">Nom : </span>\n");
    gtk_label_set_markup(GTK_LABEL(LabelPrenomM), "<span font_desc=\"Times New Roman 12\">Prenom : </span>\n");
    gtk_label_set_markup(GTK_LABEL(LabelNoBadgeM), "<span font_desc=\"Times New Roman 12\">No Badge : </span>\n");
    gtk_label_set_markup(GTK_LABEL(LabelSoldeM), "<span font_desc=\"Times New Roman 12\">Solde : </span>\n");
    gtk_label_set_markup(GTK_LABEL(LabelNbRepM), "<span font_desc=\"Times New Roman 12\">Nbr de tickets pour le repas : </span>\n");
    gtk_label_set_markup(GTK_LABEL(LabelNbReloadM), "<span font_desc=\"Times New Roman 12\">Nbr de tickets pour rechargement : </span>\n");    
    /* Positionnement des Label */
    gtk_layout_put (GTK_LAYOUT(Layout),LabelGeneral,0,0);
    gtk_layout_put (GTK_LAYOUT(Layout),LabelNomM,50,120);
    gtk_layout_put (GTK_LAYOUT(Layout),LabelPrenomM,50,180);
    gtk_layout_put (GTK_LAYOUT(Layout),LabelNoBadgeM,50,240);
    gtk_layout_put (GTK_LAYOUT(Layout),LabelSoldeM,50,300);
    gtk_layout_put (GTK_LAYOUT(Layout),LabelNbRepM,500,180);
    gtk_layout_put (GTK_LAYOUT(Layout),LabelNbReloadM,500,240);
    /* Création des zones */    
    tableau[0].ZoneNomM = gtk_entry_new();
    tableau[0].ZonePrenomM = gtk_entry_new();
    tableau[0].ZoneNoBadgeM = gtk_entry_new();
    tableau[0].ZoneSoldeM = gtk_entry_new();
    tableau[0].ZoneNbRepM = gtk_entry_new();
    tableau[0].ZoneNbReloadM = gtk_entry_new();
    /* Lecture Port com*/
    char * Tab ;
    Tab = LecturePort();
    FermeCom();
    /* Affectation des zones */
    int Code = 0;
    Code = (int)Tab ;
    free(Tab);
    char chaine[20];
    sprintf(chaine, "%d", Code);
    gtk_entry_set_text(GTK_ENTRY(tableau[0].ZoneNoBadgeM),chaine);
    gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZoneNomM), FALSE);
    //ELEMENT element[1000];
    int i, nombrelement = LectureFichier("tutu2.txt", element);
    for(i = 0; i < nombrelement; i++){
              if(strcmp(chaine,element[i].code)==0){
                     gtk_entry_set_text(GTK_ENTRY(tableau[0].ZonePrenomM),element[i].prenom);
                     gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZonePrenomM), FALSE);
                     gtk_entry_set_text(GTK_ENTRY(tableau[0].ZoneNomM),element[i].nom);
                     gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZoneNomM), FALSE);
                     gtk_entry_set_text(GTK_ENTRY(tableau[0].ZoneSoldeM),element[i].solde);
                     gtk_entry_set_editable(GTK_ENTRY(tableau[0].ZoneSoldeM), FALSE);
              }
    }
    /* Positionnement des Zones */
    gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNomM,160,120);
    gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZonePrenomM,160,180);
    gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNoBadgeM,160,240);
    gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneSoldeM,160,300);
    gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNbRepM,550,200);
    gtk_layout_put (GTK_LAYOUT(Layout),tableau[0].ZoneNbReloadM,550,260);
    /* Affichage */
    gtk_widget_show_all(WindowAuto);
    g_signal_connect(G_OBJECT(pButton[0]), "button-press-event", G_CALLBACK( ModeManuel ), WindowAuto);
    g_signal_connect(G_OBJECT(pButton[1]), "button-press-event", G_CALLBACK( AccueilCreation ), WindowAuto);
    g_signal_connect(G_OBJECT(pButton[2]), "button-press-event", G_CALLBACK(  Quitter ), WindowAuto);
    g_signal_connect(G_OBJECT(pButton[3]), "button-press-event", G_CALLBACK(  Valider2 ), &tableau);
}
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
 
//**********************************************************************************************/
//                                                                                             //
//           L E C T U R E   P O R T    C O M                                                  //
//                                                                                             //
//**********************************************************************************************/
char * LecturePort(){
     	//Ouverture port série
	g_ErrCom=OuvreCom(PORT1,V9600,BITS_8,PAS_DE_PARITE,BIT_DE_STOP_1);
	unsigned char* TrameRecue[25];
       unsigned int NbMaxCar=25;
       unsigned int NbCarRecus;
	unsigned int cpt;
	cpt=0;
	while (cpt!=25)
	{
		TrameRecue[cpt] = NULL;
		cpt=cpt+1;
	}
       int tmpp = 0;
       while (*TrameRecue == 0 ) {
              ReceptionCom(TrameRecue,NbMaxCar,&NbCarRecus);
       if(*TrameRecue != NULL)
       {
           // traitement
           char TrameTmp[25];
           int cpt2 = 0 ;
           while (cpt2!=25)
	    {
              TrameTmp[cpt2] = '0' ;
              cpt2++;
           }
           itoa((int)*TrameRecue, TrameTmp, 2);
       }
       tmpp++;
       }
       return *TrameRecue ;
}