GTK -> SDL

Fermé
Fereah Messages postés 1 Date d'inscription jeudi 5 décembre 2013 Statut Membre Dernière intervention 5 décembre 2013 - 5 déc. 2013 à 17:41
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 - 7 déc. 2013 à 00:31
Bonjour,
Je voulais savoir si il était possible de mettre du code GTK dans du code SDL, afin que je puisse mettre des menus dans mon programme SDL, car d'après mes connaissance, la SDL ne propose pas les menus ?

Merci de vos réponse

2 réponses

nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 64
6 déc. 2013 à 01:45
t'as qu'à crée une fenetre, comprenant un menu, une barre d'outil et un zone principale(GtkDrawingarea) dont tu passeras l'ID à ta grosse fonction SDL pour le traitement que tu souhaites. Mais, comme c'est du code c de toute façon, oui ça marchera, il te suffit juste d'avoir les libs et les includes necessaires
1
Bonjour,
Je n'ai pas très bien compris ta réponses. En gros moi ce que je eut, c'est une barre de menu en haut de mon programme comme Microsoft pour pouvoir enregistrer , ouvrir un fichier, l'imprimer, etc... Bref pouvoir faire tous les truc qui nécessite d'aller dans les paramètre non pas de mon programme mais du bureau de l'utilisateur
0
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 64
Modifié par nar6du14 le 7/12/2013 à 00:31
je te fais un exemple simple

#include <gtk/gtk.h>
#include <sdl/sdl.h>
#include <gdk/gdkh

int main(int argc, char* argv[])
{
gtk_init(&argc, &argv);
void get_id(GtkWidget*wid, gpointer user_data);
GtkWidget* win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget* box = gtk_box_new(Gtk_ORIENTATION_VERTICAL, 10);
GtkWidget* draw_area = gtk_drawing_area_new(); /*à passe a SDL*/
GtkWidget*menubar= gtk_menu_bar_new();
gtk_menu_bar_set_pack_direction(GTK_MENU_BAR(menubar), GTK_PACK_DIRECTION_LTR);
gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(box), draw_area, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(win), box);

/*il faut connecter un handler pour le signal "realize" afin de passe l'identifiant de la zone de dessin à la SDL*/

g_signal_connect(G_OBJECT(draw_area), "realize", G_CALLBACK(get_id), NULL);
gtk_widget_show_all(win);
gtk_main();
return 0;
}



void sdl_job(guint32 window_id)
{
/*tu dois definir ici un thread et dans ce thread tu implémenteras ce que la SDL doit dessiner sur l'aire de dessin défini par "draw_area": l'aire de dessin ici sera désignée par "window_id" qui représente l'identifiant de la fenetre de dessin sur le systme d'exploitation. chaque fenetre crée sur le système d'exploitation a un identifiant unique la fonction get_id permet de reccupérer l'identifiant de draw_area, cet identifiant sera par la suite utilisé par la SDL et cette*/
}

void get_id(GtkWidget* wid, gpointer data)
{
sdl_job( GDK_WINDOW_ID(gtk_widget_get_window(wid)) );
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
6 déc. 2013 à 15:58
Bonjour,

Tout dépend de ce que tu entends par menu, mais SDL peut bel et bien en créer.
Tu as bon nombres de tutos sur google (donc un sur openclassrooms).

Cdlt,
0