gtk & allegro



  • hi,
    hab da mal wieder ne frage:
    gibt es ne möglichkeit in ner gtk anwendung allegro zu verwenden? (also in der gui verankert....z.b. 'n menubalken mit ner anzeige drunter in der man allegro verwenden kann)
    kennt da jemand ne lösung?
    thx
    mfg
    Desire



  • Es sollte gehen. Ich kenne mich zwar mir Linux net so aus aber unter Windows kann man auch selber ein Fenster erstellen und Allegro sagen das er das verwednen soll das müsste mit Linux auch so klappen du mussst nur das Fenster vorher so mit GTK selber erstellen.



  • und wie kann ich allegro sagen, dass er das verwenden soll?
    und was muss dann in dem fenster drinn sein=?
    leer oder was?
    thx
    mfg
    Desire



  • weiß keiner?



  • ich habe vor zwei jahren mal damit rumgespielt... hier eine verbindungsmöglichkeit, vielleicht hilfts dir weiter..

    benutz eine musik deiner wahl 😉

    achtung: da fehlt noch viel am abmelden 😉

    #include <allegro.h>
    #include <winalleg.h>
    #include <gtk\gtk.h>
    #include <gdk\gdk.h>
    #include <gdk\win32\gdkwin32.h>
    #include <glib.h>
    
    #define SAMPLEFILE "Cyeah.wav"
    
    static SAMPLE* the_sample=NULL;
    
    gint my_done(GtkWidget widget, GdkEvent event, gpointer date)
    {
      gtk_main_quit();
      return TRUE;
    }
    
    gint my_clicked(GtkWidget widget, GdkEvent event, gpointer date)
    {
      g_print("yep, clicked\n");
    #ifndef NO_SOUND
      play_sample(the_sample, 255, 128, 1000, FALSE);
    #endif
      return TRUE;
    }
    
    int main(int argc, char *argv[])
    {
      GtkWidget *mygtkwin;
    
      GtkWidget *mypanedwin;
      GtkWidget *mylabel1;
    
      GtkWidget *mybutton;      
    
      gtk_init(&argc, &argv);
    
      mygtkwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    
      mypanedwin = gtk_hpaned_new();
    
      mylabel1=gtk_label_new("hier ein kleiner test\nin dem ich versuche\nso'n paar elementare widgets auszuprobieren\nist ein schiebeteil\nin der mitte zu fassen\n eigentlich sollte ja ein bitmap rein\nhabe es einfach nicht geschafft\n er erkennt mir die bitmaps einfach nicht an!!\nalso die allegro-bitmaps wollen nicht...");
    
      gtk_widget_realize(mygtkwin);
    
      //unoetig?? wofür ist das?? geht auch ohne....oder doch nicht???
      win_set_window(GDK_WINDOW_XWINDOW(mygtkwin->window));
    
      gtk_window_set_title(GTK_WINDOW(mygtkwin), "elises neuer versuch, der  noch nicht mit bitmaps klappt");
    
      //----allegro
      allegro_init();
    
    #ifndef NO_SOUND
      if (install_sound(digi_card, MIDI_NONE, NULL) != 0)
      {
        allegro_message("Error initialising sound system\n%s\n", allegro_error);
        return 1;
      }
    
      the_sample = load_sample(SAMPLEFILE);
      if (!the_sample)
      {
        allegro_message("Error reading WAV file '%s'\n", SAMPLEFILE);
        return 1;
      }
    #endif
    
      gtk_container_add(GTK_CONTAINER(mygtkwin), mypanedwin);
    
      gtk_signal_connect(GTK_OBJECT(mygtkwin), "delete_event", GTK_SIGNAL_FUNC(my_done), NULL);
    
      mybutton = gtk_button_new_with_label("click!");
      gtk_signal_connect(GTK_OBJECT(mybutton), "clicked", GTK_SIGNAL_FUNC(my_clicked), NULL);
    
       //---fuellen
      gtk_paned_add1(GTK_PANED(mypanedwin), mylabel1);
      gtk_paned_add2(GTK_PANED(mypanedwin), mybutton);
    
      gtk_widget_show(mybutton);
    
      gtk_widget_show(mypanedwin);
    
      gtk_widget_show_all(mygtkwin);
    
      gtk_main();
    
      g_print("done!\n");
    
      #ifndef NO_SOUND
       stop_sample(the_sample);
       destroy_sample(the_sample);
       remove_sound();
       #endif
    
      //----allegro 
      allegro_exit();
    
       return 0;
    }
    


  • oki, danke. werd ich mal ausprobieren.
    mfg
    Desire



  • mist, ich seh grad, das ganze is windows-spezifisch...naja...trotzdem danke
    an euch beide!
    thx
    mfg
    Desire



  • müßte aber unter linux genauso laufen... beide apis gibts ja auch dort..

    klar, die includes ändern..

    ps: wennste weitere beispiele brauchst, hab ich noch ein paar mit alleggl (allegro opengl) und gtk..

    such ich dann..

    [ Dieser Beitrag wurde am 26.06.2003 um 19:44 Uhr von elise editiert. ]



  • ne, das is nich das problem, sondern die funktion
    win_set_window();
    is windows spezifisch...hab ich aus der allegro api doku entnommen...
    trotzdem danke
    Desire

    ps: wenn die beispiele mit alleggl die nicht benutzen wäre ich dir dankbar wenn du mir die auch noch geben könntest. ich werd mir das beispiel trotzdem mal aufheben, da ich, sobal ich mehr speicherplatz als 6 gb hab, mir auch noch windows draufmach...multisystem rult *g*



  • die win_set_window brauchst du auch nicht

    nimm sie einfach raus, läuft auch ohne...



  • hm...
    also:
    ich hab das ganze jetzt mal unverändert gelassen (bis auf die main() und die header)
    ich hab die win_set_window() auskommentiert und hab bei den headerfiles stehen:
    #include <allegro.h>
    #include <gtk/gtk.h>
    #include <gdk/gdk.h>
    #include <glib.h>
    dann hab ich das ganze kompiliert (mit dem befehl
    gcc -o galleg galleg.cpp `pkg-config --libs --cflags gtk+` `allegro-config --libs --cflags`)
    da bekomme ich folgende fehler:
    /tmp/cc9fBzVn.o(.eh_frame+0x11): undefined reference to \_\_gxx\_personality\_v0' /usr/local/lib/liballeg-4.0.3.so: undefined reference to_mangled_main_address'collect2: ld returned 1 exit status
    um das "undefined reference to \_mangled\_main\_address'" wegzubekommen hab ich noch 'n END\_OFMAIN() hinten drangehängt und bekomm jetzt nur noch den fehler: /tmp/ccVkHuZZ.o(.eh\_frame+0x11): undefined reference to__gxx_personality_v0'
    aus dem werd ich allerdings nit schlau...
    kannst du mir da helfen?
    danke
    Desire

    ps: ich dachte das ich die win_set_window() brauch, da in der doku steht, das man mit ihr angeben kann, dass allegro 'n anderes fenster benutzen soll und kein eigenes erstellen soll...



  • hat anscheinend nix mit allegro oder so zu tun...

    google mal nach "undefined reference to `__gxx_personality_v0'", da kommt eine menge, ich schau mal durch, ob was drin ist.. wenn nicht, mal im linuxforum fragen..



  • nur eine doofe idee..

    versuch mal g++ (gpp) statt gcc..



  • danke dir.
    hm...
    "> reassign 186788 libsigc++-1.2-5c102
    Bug#186788: g++-3.2: undefined reference to \_\_gxx\_personality_v0' on parisc Bug reassigned from package \g++-3.2' to `libsigc++-1.2-5c102'.

    > severity 186788 serious
    Bug#186788: g++-3.2: undefined reference to \_\_gxx\_personality_v0' on parisc Severity set toserious'.

    > merge 186788 185395
    Bug#185395: libsigc++-1.2-5c102: Can't link against libsigc-1.2.so
    Bug#186788: g++-3.2: undefined reference to `__gxx_personality_v0' on parisc
    Merged 185395 186788."
    is anscheinend 'n bug in der verbindung gcc 3.2 + libsigc++1.2....hab ich das richtig gelesen? *g*



  • http://www.tutorials.de/tutorials81648.html

    der link sieht ganz gut aus



  • ja, scheints zu sein..hab das ganze mal mit dem gleichen befehl nur anstatt gcc g++ kompiliert..
    ohne fehler kompiliert.
    jetzt brauch ich nur noch ne wave datei *lol*
    danke dir vielmals!
    mfg
    Desire



  • und nu baust du ein fenster rein und postest es mir 😉



  • wie jetzt.
    quellcode posten oda wat?
    ~nix kapier~

    ps: jetzt funktionierts



  • na mal gtk und allgro oder allegl ordentlich verbinden und weiter dran bleiben..
    ich habe es zeitmäßig damals nur zu peripheren lösungen gebracht 😞

    viel spaß



  • achso...werd mal sehen was ich tun kann...
    danke nochmals!
    mfg
    Desire


Anmelden zum Antworten