GTK+ 3.0, fonction g_signal_connect erreur

Fermé
Maxim - Modifié par Maxim le 27/05/2011 à 04:57
 Maxim - 30 mai 2011 à 06:34
Bonjour,

Avant tout, regardez comme le code est pas long :


====================================================================
#include <stdlib.h>
#include <gtk/gtk.h>

int WindOpened;
void OpenGame(GtkButton *button)
{
WindOpened = 1;

}
int main(int argc,char **argv)
{
WindOpened = 0;
GtkWidget* p_Window;
GtkWidget* p_STARTED;
GtkWidget* p_Label;
GtkWidget* StartGame;
GtkWidget* StartButton;

gchar* sUtf8;
gchar* Loading;
gchar* Loaded;

gtk_init(&argc,&argv);

p_Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(p_Window), "KINGDOM");
gtk_window_set_default_size(GTK_WINDOW(p_Window), 400, 300);
gtk_window_set_position (GTK_WINDOW (p_Window), GTK_WIN_POS_CENTER);
g_signal_connect(G_OBJECT(p_Window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

/* Start button */
StartGame = gtk_hbox_new(FALSE, 0);
gtk_container_add (GTK_CONTAINER (p_Window), StartGame);
/* creates a new button with the label "Button 1". */
StartButton = gtk_button_new_with_label ("Start Game!");
g_signal_connect(G_OBJECT(StartButton), "clicked", G_CALLBACK(OpenGame), NULL);
gtk_box_pack_start (GTK_BOX(StartGame), StartButton, TRUE, TRUE, 0);
/* END OF INIT*/



p_Label=gtk_label_new(sUtf8);
g_free(sUtf8);

sUtf8 = g_locale_to_utf8("Le programme est en cours de chargement!", -1, NULL, NULL, NULL);
p_Label=gtk_label_new(sUtf8);
g_free(sUtf8);




Loading = g_locale_to_utf8("LOADING...", -1, NULL, NULL, NULL);
p_Label=gtk_label_new(Loading);
g_free(Loading);


gtk_container_add(GTK_CONTAINER(p_Window), p_Label);

p_STARTED = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(p_STARTED), "KINGDOM - HEROES");
gtk_window_set_default_size(GTK_WINDOW(p_STARTED), 800, 600);
gtk_window_set_position (GTK_WINDOW (p_STARTED), GTK_WIN_POS_CENTER);
g_signal_connect(G_OBJECT(p_STARTED), "destroy", G_CALLBACK(gtk_main_quit), NULL);



gtk_widget_show_all(p_Window);

gtk_main();

return EXIT_SUCCESS;
}


======================================================================
Donc l'erreur que j'ai : Erreur de segmentation
Le programme se compile bien.
Je sais que j'ai aucune erreur si je retire le G_Signal_connect ou je fais mon call pour ma fonction OpenGame();

Quelqu'un peut m'aider?


A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
27 mai 2011 à 09:36
Bonjour,

Est-ce que ta fonction de callback ne devrait pas avoir un deuxième argument de type gpointer ?

void OpenGame(GtkButton *button, gpointer data)
...

Xavier
0
Bah j'veux bien la mettre, mais non ...
C'est pas ca...
0