IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Programation avec GTK et Allegro en en même temps


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Programation avec GTK et Allegro en en même temps
    Bonjour,
    j'aimerais faire un petit programme avec les bibliothèques GTK et Allegro en même temps.
    Ce serait pour faire une fenêtre (=> GTK), y afficher une image à gauche (=> allegro) et des boutons à droite (=>GTK).

    Je n'arrive pas à programmer avec les 2 en même temps, mon programme ne veut même pas afficher une image .bmp en fond d'écran.

    Voici mon code pour l'instant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #define ALLEGRO_NO_MAGIC_MAIN
    #include <allegro.h>
    #define ERREUR(msg) {\
       set_gfx_mode(GFX_TEXT,0,0,0,0);\
       allegro_message("erreur ligne %d, fichier %s: %s\n",__LINE__, __FILE__,msg);\
       allegro_exit();\
       exit(EXIT_FAILURE);\
    }
     
    int main (int argc, char *argv[])
    {
        int x,y;
        BITMAP* image;
        GtkWidget *win = NULL;
     
        if (allegro_init())
            ERREUR("Cannot initalize Allegro.\n");
        gtk_init (&argc, &argv);
     
        win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (GTK_WINDOW (win), "Hello World");
        gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
     
        set_color_depth(24);
        if (set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0)!=0)
          ERREUR("initialisation mode graphique");
     
        image=load_bitmap("./image.bmp",NULL);
        if (!image)
            ERREUR("Cannot load image.\n");
     
        allegro_message("hello word allegro !");
     
        g_signal_connect (win, "destroy", gtk_main_quit, NULL);
        gtk_widget_show_all (win);
        gtk_main ();
     
        destroy_bitmap(image);
     
        return EXIT_SUCCESS;
    }

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    GTK et Allegro sont 2 systèmes de fenêtrages différents, tu dois donc choisir lequel tu veux utiliser. Ce serait comme utiliser GTK et Qt conjointement, ça marche pas.

    Sinon concernant ton image, après l'avoir chargée le bout de code que tu nous indique ne l'utilise pas, donc c'est normal que rien de s'affiche.

  3. #3
    Invité
    Invité(e)
    Par défaut Programation GTK
    Merci pour ta réponse, mais si, il est possible de programmer avec les 2 bibliothèques en même temps.
    C'est bon mes ancien problème sont réglé, j'arrive à coder en Allegro + GTK, j'arrive à afficher une image de fond (par l'intermédiaire d'Allegro).

    Et maintenant mon souci est que je voudrai quant je clic sur l'image, grace à GTK (signal_connect) entrer dans une fonction avec comme argument une structure qui est les coordonnée de la position de la souri au moment du clic sur l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    typedef struct coordonnee{
        int x;
        int y;
    }coord;
    Dans cette fonction, j'ai des condition ( c'est des "if" selon les coordonnée de la souris).

    Pouvez vous m'aider svp je n'y arrive pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Voici mon signal connect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gtk_signal_connect (GTK_OBJECT (window), "boutton_press_event", GTK_SIGNAL_FUNC (popu), souris);
        gtk_widget_set_events (window, GDK_BOUTTON_MOTION_MASK);
    Et ma fonction "popu" pour l'instant elle affiche juste les coordonnée de la souris passé par argument structure "coordonnee souris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static void popu(GtkWidget *widget, coordonnee *souris)
    {
        printf("x = %d  \t  y = %d", souris->x, souris->y);
    }

  5. #5
    Invité
    Invité(e)
    Par défaut
    Plus d'informations:
    J'ai ma fonction qui affiche, les coordonnées de ma souris, sur la console d'application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    static void position_souris( GtkWidget *widget, GdkEventMotion *event )
    {
        gint x1, y1;
        if (event->is_hint)
            gdk_window_get_pointer (event->window, &x1, &y1, NULL);
        else
        {
            x1 = event->x;
            y1 = event->y;
        }
        g_printf("x:%d  y:%d\n", x1, y1);
    }
    Et mon appelle de fonction qui se fait par un g_signal_conect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gtk_signal_connect (GTK_OBJECT (window), "motion_notify_event", GTK_SIGNAL_FUNC (position_souris), NULL);
        gtk_widget_set_events (window, GDK_POINTER_MOTION_MASK);
    Celà affiche à chaque fois que je déplace la souris sur ma fenetre, les nouvelles coordonnées de ma souris.

    J'aimerai que celà ne se fasse que lorsque je clic sur le boutton gauche de ma souris, sur ma fenetre.

    Voici des images pour l'illustration:

  6. #6
    Invité
    Invité(e)
    Par défaut
    Va t'on atteindre les 100 lecteurs sans aucune réponse??

    Personne ne sait comment afficher les coordonnées du clique de la souris en GTK??

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai un soucis de compilation.
    avec ce petit code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    static void position_souris(GtkWidget *widget, GdkEventButton *event, t_axe **matriceAxe)
    {
        if((getpixel(screen, event->x, event->y)!=0)&&((getpixel(screen, event->x, event->y)==5026082)||(getpixel(screen, event->x, event->y)==2588671)||(getpixel(screen, event->x, event->y)==2366701)))
        {
                printf("depart : %d|| arive : %d|| vitesse : %d|| etat : %d|| fluxmax : %d|| flux reel : %d \n",matriceAxe[22][23].pDepart,matriceAxe[22][23].pArrivee, matriceAxe[22][23].VitesseAct,matriceAxe[22][23].Etat,matriceAxe[22][23].FluxMax,matriceAxe[22][23].FluxReel);
         }
    }
    Mon compilateur me dit error syntax before 't_axe'
    bizar

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/02/2013, 12h45
  2. Demarrer deux exe en même temps avec gtk+
    Par suzan_ dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 30/07/2010, 11h22
  3. Réponses: 2
    Dernier message: 16/12/2007, 18h28
  4. Réponses: 1
    Dernier message: 28/10/2004, 21h27
  5. [GTK]installer Dev-C++ avec gtk 1.2 ...
    Par vbcasimir dans le forum Dev-C++
    Réponses: 2
    Dernier message: 02/02/2004, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo