GTK -> SDL

Fereah Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
nar6du14 Messages postés 459 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

nar6du14 Messages postés 459 Date d'inscription   Statut Membre Dernière intervention   64
 
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
Fereah
 
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   Statut Membre Dernière intervention   64
 
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   Statut Contributeur Dernière intervention   1 846
 
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