Salut,

Je n'ai pas le début de la moindre explication sur une erreur qui survient sur un file_chooser_dialog, je comprend à peu près ce que ma console m'affiche mais je ne sais pas comment y remédier.

Je dit bien exécution, puisque la compilation ne m'affiche pas d'erreur.

L'erreur survient que je clique sur un bouton qui a pour effet de supprimer la boite de dialogue, que ce soit les boutons open, cancel ou la croix rouge.

voila ce que ma console m'affiche :

(moulinette_gtk_v1.exe:4888): Gtk-WARNING **: file_system_win32=026BAF20 still h
as handle=0269DC48 at finalization which is NOT CANCELLED!

(moulinette_gtk_v1.exe:4888): Gtk-WARNING **: file_system_win32=026BAF20 still h
as handle=0269DB58 at finalization which is NOT CANCELLED!

Process returned -1073741819 (0xC0000005) execution time : 9.631 s
Press any key to continue.

voila le code de mon gtk_file_chooser_dialog

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
void cb_executer(GtkWidget *pWidget, gpointer user_data)
{
    GtkWidget *p_dialog = NULL;
    p_dialog = gtk_file_chooser_dialog_new ("Ouvrir un fichier", NULL,
                                            GTK_FILE_CHOOSER_ACTION_OPEN,
                                            GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                            GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
                                            NULL);
    if (gtk_dialog_run (GTK_DIALOG (p_dialog)) == GTK_RESPONSE_ACCEPT)
    {
        /*gchar *file_name = NULL;
 
        file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (p_dialog));
        open_file (file_name);
        g_free (file_name), file_name = NULL;*/
    }
    gtk_widget_destroy (p_dialog);
 
    /* Parametre inutilise */
    (void)pWidget;
    (void)user_data;
}
j'ai mis le code du if en commentaire juste pour les tests, de toute façon lors des test j'appuie sur le bouton cancel.

Voilà la fonction ou se trouve le bouton qui fait appel à la boite de dialogue :

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
void menu_newAccueil(GtkWidget *pBox)
{
    GtkWidget *pBoutonExecuter = NULL;
    GtkWidget *pBoutonModeSilencieux = NULL;
    GtkWidget *pMainTable = NULL;
 
    pMainTable = gtk_table_new(4, 3, TRUE);
    gtk_box_pack_start(GTK_BOX(pBox), pMainTable, TRUE, TRUE, 0);
    pBoutonExecuter = gtk_button_new_with_label("Executer");
    pBoutonModeSilencieux = gtk_button_new_with_label("Executer (mode silencieux)");
    g_signal_connect (G_OBJECT (pBoutonExecuter), "clicked", G_CALLBACK (cb_executer), NULL);
    //g_signal_connect(G_OBJECT(pBoutonModeSilencieux), "clicked", G_CALLBACK(cb_executer), NULL);
 
    gtk_table_attach_defaults(GTK_TABLE(pMainTable), pBoutonExecuter,
                     1, 2,
                     1, 2);
    gtk_table_attach_defaults(GTK_TABLE(pMainTable), pBoutonModeSilencieux,
                     1, 2,
                     2, 3);

Voilà, je comprend rien, la boite de dialogue est un copié collé d'un morceau d'un autre programme qui marche très bien


Merci d'avance à tous ceux qui prendront le temps de me lire.