Hallo Community,
ich wollte mal wieder Programmieren und dachte mir ich nehm meine alten Delphi-Beispiele aus der Schule und versuche mich mal in der GUI-Programmierung mit C.
Hab mir dazu Gtk+ ausgesucht - hat mir gefühlsmäßig besser gefallen...
Hab mir jetzt erst einmal mit Glade ne GUI gebaut und nach Tutorial das ganze zum laufen gebracht:
Bildschirmfoto-Schere-Stein-Papier.png
Bekomme es auch schon hin, das Button-clicked-Signal zu nutzen und dort abzufragen, welcher RadioButton gedrückt wird:
Code:
void on_button1_clicked ( GtkButton *button1,
GSList *radio_list
) {
GtkWidget *radio;
int i;
for(i = 0; i < g_slist_length(radio_list); ++i) {
radio = g_slist_nth_data(radio_list, i);
/* radio != NULL check misses */
g_printf("%d. Durchlauf, ", i); /* Control of break */
if(gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(radio) )) {
g_printf("Button %d gedrueckt\n", 3-i);
break;
}
}
g_print("Kontrolle\n");
}
Jetzt zu meinem Problem:
Wenn ich das so ausführe wird mir korrekt angezeigt, welcher RadioButton aktiv ist, allerdings wird die Kontrolausgabe nach der for-Schleife, sowohl vorher als auch hinterher ausgegeben:
chris@Terra-Lap:Schere_Stein_Papier$ gcc -o game_SSP game_SSP.c $(pkg-configflags --libs gtk+-2.0 gmodule-2.0)
chris@Terra-Lap:Schere_Stein_Papier$ ./game_SSP
Kontrolle
0. Durchlauf, 1. Durchlauf, 2. Durchlauf, Button 1 gedrueckt
Kontrolle
Kontrolle
0. Durchlauf, 1. Durchlauf, Button 2 gedrueckt
Kontrolle
Kontrolle
0. Durchlauf, Button 3 gedrueckt
Kontrolle
Wodurch tritt dieser Effekt auf? Ist das Normal?
Dann noch ne Frage zur Benutzung von Gtk+:
Wenn ich jetzt in dem Button-clicked callback
- KI-Auswahl
- Info-Ausgabe
- Punkteveränderung
setzen will, muss ich dann die betroffenen Objekte mit übergeben, oder kann ich einfach darauf zugreifen?
THX 4 Help
PS: Quellcode im Anhang
Lesezeichen