PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] erste GTK-Versuche



nul
30-06-2003, 00:10
#include <stdio.h>
#include <gtk/gtk.h>

char name[] = "brc";
GtkWidget *menue_erzeugen(GtkWidget *window);



int main(int argc, char *argv[])
{
GtkWidget *window, *menueleiste;
GtkWidget *vbox;

gtk_init (&argc, &argv);

/* Neues Fenster erzeugen und GroŽße festlegen + Dateiname oben */

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(GTK_WIDGET(window), 600, 400);
gtk_window_set_title(GTK_WINDOW(window), name);

/* Ein Menü erzeugen */

menueleiste = menue_erzeugen(window);
gtk_box_pack_start(GTK_BOX(vbox), menueleiste, FALSE, TRUE, 0);
gtk_widget_show(menueleiste);

gtk_widget_show(window);

gtk_main();

return 0;
}



static GtkItemFactoryEntry menu_array[] =
{
{ "/_Dokument", NULL, NULL, 0, "<Branch>" },
{ "/Dokument/_Beenden", "<control>Q", gtk_main_quit, 0, NULL},

{ "/_Bearbeiten", NULL, NULL, 0, "<Branch>"},
};

GtkWidget *menue_erzeugen(GtkWidget *window)
{
GtkWidget *menueleiste;
GtkItemFactory *itemfact;
GtkAccelGroup *accelgroup;

gint msize = sizeof(menu_array) / sizeof(menu_array[0]);

accelgroup = gtk_accel_group_new();

gtk_accel_group_attach(accelgroup, GTK_OBJECT(window));

itemfact = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>",
accelgroup);
gtk_item_factory_create_items(itemfact, msize, menu_array, NULL);

menueleiste = gtk_item_factory_get_widget(itemfact, "<main>");

return menueleiste;
}




So, jetzt hab ich die Schule fertig, da dachte ich mir, ich versuch mich mal an gtk+-Programmierung. Und schon komm ich nicht weiter.
Schritt für Schritt:
1. Ich habe das Fenster erzeugt (OK)
2. Versuche ein Menü zu integrieren --> Problem

und zwar darin, es steht folgende ausgabe wenn ich es mit ff. Befehl kompiliere:

gcc safe2.c -o safe `pkg-config --cflags --libs gtk+-2.0`

und dann steht:

/tmp/cc2KWmFH.o : In funktion `menue_erzeugen`:
/tmp/cc2KWMFh.o(.text+0x140): undefined reference to `gtk_accel_group_attach`
collect2: ld returned 1 exit status

Ich hab keine Ahnung, was ich da falsch habe, aber ihr könnt mir sicher helfen, schon mal vielen dank im voraus.

mfg nul :o

Trillian
30-06-2003, 19:25
Diese Funktion gibt's halt nicht.
s. GTK2 API Referenz

Kompilier besser mit "-Wall", das hätte dich schon gewarnt, dass kein Prototyp für diese Funktion gefunden wurde.