Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sans s'ouvrir, windows dit que le programme doit fermer.

    4 novembre 2006 à 14:07:56

    Salut !

    J'ai compiler avec code::block, aucun warning...
    Dès que je veux lancer le programme, la belle fenêtre windows qui dit que le programme doit fermer s'ouvre.
    Ne voyant pas d'où ca vient, j'ai chercher partout dans code::block pour avoir plus d'info, plus de problème.
    La seul chose que j'ai trouvé, c'est le petit logo "debug/continue".
    Et voilà ce que ca me donne:
    Image utilisateur
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2006 à 14:13:28

      main.c


      #include <stdlib.h>
      #include <gtk/gtk.h>
      #include "main.h"
      #include "interface.h"

      int main (int argc, char *argv[])
      {
          gtk_init(&argc,&argv);

          affichageInterface();

          gtk_main();

          return EXIT_SUCCESS;
      }


      interface.c


      #include <stdlib.h>
      #include <gtk/gtk.h>
      #include "interface.h"
      #include "data.h"
      #include "callback.h"

      void affichageInterface(void)
      {
          GtkWidget *fixed;
          GtkWidget *entry;
          GtkWidget *label;
          GtkWidget *button;


          GtkWidget *pMenuBar;
          GtkWidget *pMenu;
          GtkWidget *pMenuItem;
          GtkWidget *imageMenu;
          GSList *pList;

          pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
                      gtk_window_set_title(GTK_WINDOW(pWindow), "Le Plus Ou Moin!! v1.0");
                      gtk_window_set_default_size(GTK_WINDOW(pWindow), 280, 110);
                      gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
                      g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);

         /* Creation de la GtkVBox */
          pVBox = gtk_vbox_new(FALSE, 0);
          gtk_container_add(GTK_CONTAINER(pWindow), pVBox);

        /*************************/
        /**  Création du menu   **/
        /*************************/
          pMenuBar = gtk_menu_bar_new();
         /** Sous-menu "fichier" **/
          pMenu = gtk_menu_new();

          pMenuItem = gtk_image_menu_item_new_with_mnemonic ("Nouvelle partie");
          gtk_widget_show (pMenuItem);
          gtk_container_add (GTK_CONTAINER (pMenu), pMenuItem);
      //    g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(initialisationDesVariables), (GtkWidget*) pWindow);

          imageMenu = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
                      gtk_widget_show (imageMenu);
                      gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), imageMenu);

          pMenuItem = gtk_separator_menu_item_new();
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);

          pMenuItem = gtk_image_menu_item_new_with_mnemonic ("Quittez");
                      gtk_widget_show (pMenuItem);
                      gtk_container_add (GTK_CONTAINER (pMenu), pMenuItem);

          imageMenu = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU);
                      gtk_widget_show (imageMenu);
                      gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), imageMenu);
                      g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnQuitter), (GtkWidget*) pWindow);


          pMenuItem = gtk_menu_item_new_with_label("Fichier");
                      gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);

        /** Sous-menu "Niveau" **/
          pMenu = gtk_menu_new();

          pMenuItem = gtk_radio_menu_item_new_with_label(NULL, "Niveau 1 (Entre 1 et 100)");
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
          pList = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(pMenuItem));
          g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnNiveau1), NULL);

          pMenuItem = gtk_radio_menu_item_new_with_label(pList, "Niveau 2 (Entre 1 et 1000)");
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
          pList = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(pMenuItem));
          g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnNiveau2), NULL);

          pMenuItem = gtk_radio_menu_item_new_with_label(pList, "Niveau 3 (Entre 1 et 10000)");
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
          pList = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(pMenuItem));
      //    g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnNiveau3), NULL);

          pMenuItem = gtk_radio_menu_item_new_with_label(pList, "Niveau 4 (Entre 1 et 100000)");
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
          pList = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(pMenuItem));
      //    g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnNiveau4), NULL);

          pMenuItem = gtk_menu_item_new_with_label("Niveau");
                      gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);



        /** Sous-menu "?" **/
          pMenu = gtk_menu_new();

          pMenuItem = gtk_image_menu_item_new_with_label("À propos");
                      gtk_widget_show (pMenuItem);
                      gtk_container_add (GTK_CONTAINER (pMenu), pMenuItem);

          imageMenu = gtk_image_new_from_stock ("gtk-info", GTK_ICON_SIZE_MENU);
                      gtk_widget_show (imageMenu);
                      gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), imageMenu);
                      g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnAbout), (GtkWidget*) pWindow);


          imageMenu = gtk_image_new_from_stock ("gtk-info", GTK_ICON_SIZE_MENU);
                      gtk_widget_show (imageMenu);
                      gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), imageMenu);

          pMenuItem = gtk_menu_item_new_with_label("?");
                      gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
                      gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);

         /* Ajout du menu a la fenetre */
          gtk_box_pack_start(GTK_BOX(pVBox), pMenuBar, FALSE, FALSE, 0);


        /***************************/
        /**      Début page       **/
        /***************************/
          fixed = gtk_fixed_new ();
          gtk_widget_show (fixed);
          gtk_box_pack_start (GTK_BOX (pVBox), fixed, TRUE, TRUE, 0);

          labelNiveau = gtk_label_new("Niveaux 1: Entre 1 et 100");
          gtk_widget_show (labelInfo);
          gtk_fixed_put (GTK_FIXED (fixed), labelInfo, 8, 4);
          gtk_widget_set_size_request (labelInfo, 256, 16);

          entry = gtk_entry_new ();
          gtk_widget_show (entry);
          gtk_fixed_put (GTK_FIXED (fixed), entry, 110, 20);
          gtk_widget_set_size_request (entry, 158, 21);

          label = gtk_label_new ("Rentrer un chiffre :");
          gtk_widget_show (label);
          gtk_fixed_put (GTK_FIXED (fixed), label, 8, 22);
          gtk_widget_set_size_request (label, 104, 16);

          button = gtk_button_new_with_mnemonic ("Proposer le chiffre");
          gtk_widget_show (button);
          gtk_fixed_put (GTK_FIXED (fixed), button, 80, 44);
          gtk_widget_set_size_request (button, 115, 24);

          labelInfo = gtk_label_new(NULL);
          gtk_widget_show (labelInfo);
          gtk_fixed_put (GTK_FIXED (fixed), labelInfo, 8, 66);
          gtk_widget_set_size_request (labelInfo, 256, 16);


          gtk_widget_show_all(pWindow);

      }


      Callback.c


      #include <stdlib.h>
      #include <stdlib.h>
      #include <gtk/gtk.h>
      #include "data.h"
      #include "callback.h"

      void OnQuitter(GtkWidget* widget, gpointer data)
      {
          GtkWidget *pQuestion;

          pQuestion = gtk_message_dialog_new(GTK_WINDOW(data),
                                             GTK_DIALOG_MODAL,
                                             GTK_MESSAGE_WARNING,
                                             GTK_BUTTONS_YES_NO,
                                             "Voulez vous vraiment quitter?");

          switch(gtk_dialog_run(GTK_DIALOG(pQuestion)))
          {
              case GTK_RESPONSE_YES:
                  gtk_main_quit();
              break;
              case GTK_RESPONSE_NONE:
              case GTK_RESPONSE_NO:
                  gtk_widget_destroy(pQuestion);
              break;
          }
      }

      void OnAbout(GtkWidget* widget, gpointer data)
      {
          GtkWidget *pAbout;
          gchar *copyright;

          copyright = g_locale_to_utf8("Touts droits réservés", -1, NULL, NULL, NULL);
          pAbout = gtk_message_dialog_new (GTK_WINDOW(data),
                                           GTK_DIALOG_MODAL,
                                           GTK_MESSAGE_INFO,
                                           GTK_BUTTONS_OK,
                                           "Le Plus ou moin v1.0\nEcrit par"
                                           " Vincent B.\n%s\nwww.vincprog.new.fr", copyright);

          gtk_dialog_run(GTK_DIALOG(pAbout));

          gtk_widget_destroy(pAbout);
      }

      void OnNiveau1(GtkWidget* widget, gpointer data)
      {
          gtk_label_set_label(GTK_LABEL(labelNiveau), "Niveau 1: entre 1 et 100");
      }

      void OnNiveau2(GtkWidget* widget, gpointer data)
      {
          gtk_label_set_label(GTK_LABEL(labelNiveau), "Niveau 2: entre 1 et 1000");
      }



      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        4 novembre 2006 à 21:52:21

        Si l'OS dit sa c'est qu'il y a eu un debordement de mémoire engros ta écrit là ou tu n'avais pas le droit d'écrire.
        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2006 à 23:34:44

          Après le Pendu, le plus ou moins ? :p

          Ton programme marchait avant, il ne marche plus parce que tu as rajouté quelque chose qu'il n'aime pas. Qu'a tu rajouté en dernier ?


          Je serais toi, je ferais une unique fonction pour les niveaux!
          void OnNiveau(GtkWidget* widget, gpointer data)
          {
              gtk_label_set_label(GTK_LABEL(labelNiveau), gtk_label_get_label(widget));
          }
          • Partager sur Facebook
          • Partager sur Twitter
            5 novembre 2006 à 13:26:23

            Citation : guimers8

            Après le Pendu, le plus ou moins ? :p


            :D C'est aussi pour bien négocier GTK+... j'ai pour projet un vrai programme compliqué où le dévellopement sera hyper long, et super compliqué...
            Le pendu, je compte rajouter des choses pour les prochaines versions... Mais je l'ai mis en suspens quelques temps !

            La chose que j'ai rajouter en dernier, pour en revenir au sujet, c'est le menu, j'ai mis "Niveau 1, entre 1 et 100"...

            J'ai tout vérifier, et ca fonctionne quand je met le code de l'interface graphique directement dans main();
            • Partager sur Facebook
            • Partager sur Twitter
              5 novembre 2006 à 13:57:54

              J'arrive pas à identifier ou est ce que tu déclare ta fentre ? (pWindow)
              • Partager sur Facebook
              • Partager sur Twitter

              Sans s'ouvrir, windows dit que le programme doit fermer.

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown