Problème exécution GTK+ (language C)
Résolu
cap'tain Sheeps
-
cap'tain sheeps -
cap'tain sheeps -
Bonjour,
J'ai un problème avec mon code d'interface graphique.
Allez je suis de bonne humeur je vous le montre =) si vous voulez le tester:
Une fois la récupération du chemin faite, la fenetre du chemin se ferme normalement, mais quand ca retourne à l'interface principale, ca plante (windows me demande d'envoyer un rapport d'erreur et tout le blablabla).
La console me renvoie ce mesage:
file_system_win32=01032060 still has handle=01030518 at finalization which is NOT CANCELLED!
Que dois-je comprendre?
Merci de votre aide.
Sheeps
Edit: Wow ! le code est visuellement beaucoup plus joli dans mon IDE...
J'ai un problème avec mon code d'interface graphique.
Allez je suis de bonne humeur je vous le montre =) si vous voulez le tester:
#include <stdlib.h> #include <gtk/gtk.h> //Créé la boîte de dialogue qui va nous demander de sélectionner un fichier pour récupérer son chemin void TraitementBouton(GtkWidget* pWidget, gpointer data); int main(int argc,char **argv) { //Ouverture de la librairie graphique GTK+ gtk_init(&argc,&argv); //Glossaire des widgets graphiques GtkWidget* FenetrePrincipale = NULL; //Fenêtre principale GtkWidget* frame = NULL; //Frame principale(faisant toute la fenêtre GtkWidget* table = NULL; //Tableau graphique pour placer les éléments GtkWidget* LabelBienvenue = NULL; //Label de présentation gchar* TexteBienvenue = NULL; //Texte associé au label de présentation GtkWidget* boxBienvenue = NULL; //Box contenant l'alignement du label de bienvenue GtkWidget* alignementBienvenue = NULL; //Alignement du label de bienvenue GtkWidget* LabelFil = NULL; //Label de renseignement du fichier de connections gchar* TexteFil = NULL; //Texte associé au label de connections GtkWidget* BoutonFil = NULL; //Bouton pour sélectionner le fichier de connections GtkWidget* boxFil = NULL; //Box pour contenir l'alignement du bouton de connections GtkWidget* alignementFil = NULL; //Alignement du bouton des connections GtkWidget* LabelPrf = NULL; //Label de renseignement de la description des connecteurs gchar* TextePrf = NULL; //Texte associé au label de description GtkWidget* BoutonPrf = NULL; //Bouton pour sélectionner le fichier de description GtkWidget* boxPrf = NULL; //Box pour contenir l'alignement du bouton de description GtkWidget* alignementPrf = NULL; //Alignement du bouton de description //****************************************************************************************** // Création de la fenêtre //****************************************************************************************** FenetrePrincipale = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(FenetrePrincipale), "delete-event", G_CALLBACK(gtk_main_quit), NULL); //Titre de la fenêtre gtk_window_set_title(GTK_WINDOW(FenetrePrincipale), "Generateur de code Winapass5000"); //Taille de la fenêtre gtk_window_set_default_size(GTK_WINDOW(FenetrePrincipale), 700, 500); //Positionnement de la fenêtre gtk_window_set_position(GTK_WINDOW(FenetrePrincipale),GTK_WIN_POS_CENTER); //****************************************************************************************** // Création de la hiérarchie graphique de la fenêtre //****************************************************************************************** frame = gtk_frame_new (""); table = gtk_table_new(4, 3, TRUE); gtk_container_add (GTK_CONTAINER (frame), table); //*************************************************** //Label de bienvenue //*************************************************** //Formalisation du texte TexteBienvenue = g_locale_to_utf8( "<span size=\"xx-large\"><b>Générateur Winapass5000</b></span>", -1, NULL, NULL, NULL); LabelBienvenue = gtk_label_new(TexteBienvenue); //Libération de la mémoire g_free(TexteBienvenue); //Formalisation grâce aux balises pango gtk_label_set_use_markup(GTK_LABEL(LabelBienvenue), TRUE); //Création de la box pour contenir l'alignement du label boxBienvenue = gtk_vbox_new(TRUE, 1); //Création de l'alignement du label alignementBienvenue = gtk_alignment_new(0.5, 0, 0, 0); //Hiérarchie des composants graphiques pour le label de bienvenue gtk_container_add (GTK_CONTAINER(alignementBienvenue), LabelBienvenue); gtk_container_add (GTK_CONTAINER (boxBienvenue), alignementBienvenue); gtk_table_attach_defaults(GTK_TABLE(table), boxBienvenue, 0, 3, 0, 1 ); //*************************************************** //Label de renseignement du fichier de connections //*************************************************** //Formalisation du texte TexteFil = g_locale_to_utf8( "Veuillez renseigner le fichier de connections (fichier.FIL) :", -1, NULL, NULL, NULL); //Création du label LabelFil = gtk_label_new(TexteFil); //Libération de la mémoire g_free(TexteFil); //Placement du label dans le tableau gtk_table_attach_defaults(GTK_TABLE(table), LabelFil, 0, 2, 1, 2); //*************************************************** //Bouton de renseignement du fichier de connections //*************************************************** //Création du bouton BoutonFil = gtk_button_new_with_mnemonic("Parcourir"); //Création de la box pour contenir l'alignement du bouton boxFil = gtk_vbox_new(TRUE, 1); //Création de l'alignement du bouton alignementFil = gtk_alignment_new(0, 0.5, 0, 0); //Hiérarchie des composants graphiques gtk_container_add (GTK_CONTAINER(alignementFil), BoutonFil); gtk_container_add (GTK_CONTAINER (boxFil), alignementFil); gtk_table_attach_defaults(GTK_TABLE(table), boxFil, 2, 3, 1, 2); //Ecoute du bouton g_signal_connect(G_OBJECT(FenetrePrincipale), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(BoutonFil), "clicked", G_CALLBACK(TraitementBouton), NULL); //************************************************************ //Label de renseignement du fichier de définition connecteurs //************************************************************ //Formalisation du texte TextePrf = g_locale_to_utf8( "Veuillez renseigner le fichier de définition des connecteurs (fichier.PRF) :", -1, NULL, NULL, NULL); //Création du label LabelPrf = gtk_label_new(TextePrf); //Libération de la mémoire g_free(TextePrf); //Placement du label dans le tableau gtk_table_attach_defaults(GTK_TABLE(table), LabelPrf, 0, 2, 2, 3); //************************************************************* //Bouton de renseignement du fichier de définition connecteurs //************************************************************* //Création du bouton BoutonPrf = gtk_button_new_with_mnemonic("Parcourir"); //Création de la box pour contenir l'alignement du bouton boxPrf = gtk_vbox_new(TRUE, 1); //Création de l'alignement du bouton alignementPrf = gtk_alignment_new(0, 0.5, 0, 0); //Hiérarchie des composants graphiques gtk_container_add (GTK_CONTAINER(alignementPrf), BoutonPrf); gtk_container_add (GTK_CONTAINER (boxPrf), alignementPrf); gtk_table_attach_defaults(GTK_TABLE(table), boxPrf, 2, 3, 2, 3); //Ecoute du bouton g_signal_connect(G_OBJECT(FenetrePrincipale), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(BoutonPrf), "clicked", G_CALLBACK(TraitementBouton), NULL); //*************************************************** //Ajout des composants dans la fenêtre et affichage //*************************************************** gtk_container_add(GTK_CONTAINER(FenetrePrincipale),frame); gtk_widget_show_all(FenetrePrincipale); gtk_main(); return EXIT_SUCCESS; } //là faudrait faire un tableau de char pour récupérer le nom des fichiers void TraitementBouton(GtkWidget* pWidget, gpointer donnee) { //Glossaire des widgets graphiques de TraitementBouton GtkWidget* FenetreSelection; GtkWidget* FenTestChemin; GtkWidget* FenetreParent; gchar* cheminFichier; FenetreParent = GTK_WIDGET(donnee); //Creation de la fenetre de selection FenetreSelection = gtk_file_chooser_dialog_new("Ouvrir...", GTK_WINDOW(FenetreParent), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); //On limite les actions a cette fenetre gtk_window_set_modal(GTK_WINDOW(FenetreSelection), TRUE); //Affichage de la fenetre switch(gtk_dialog_run(GTK_DIALOG(FenetreSelection))) { case GTK_RESPONSE_OK: //Recuperation du chemin cheminFichier = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(FenetreSelection)); FenTestChemin = gtk_message_dialog_new(GTK_WINDOW(FenetreSelection), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Chemin du fichier :\n%s", cheminFichier); gtk_dialog_run(GTK_DIALOG(FenTestChemin)); gtk_widget_destroy(FenTestChemin); g_free(cheminFichier); break; default: //[aucune instruction] break; } gtk_widget_destroy(FenetreSelection); }
Une fois la récupération du chemin faite, la fenetre du chemin se ferme normalement, mais quand ca retourne à l'interface principale, ca plante (windows me demande d'envoyer un rapport d'erreur et tout le blablabla).
La console me renvoie ce mesage:
file_system_win32=01032060 still has handle=01030518 at finalization which is NOT CANCELLED!
Que dois-je comprendre?
Merci de votre aide.
Sheeps
Edit: Wow ! le code est visuellement beaucoup plus joli dans mon IDE...
A voir également:
- Problème exécution GTK+ (language C)
- Vistalizator language pack windows 7 - Télécharger - Traduction
- Windows display language french - Guide
- Le service spouleur d'impression local n'est pas en cours d'exécution - Guide
- Autocad 2008 language pack french - Forum AutoCAD
- Il permet l’exécution des logiciels applicatifs et gère l’utilisation des ressources matérielles (mémoire, processeur, périphériques). ✓ - Forum Logiciels