PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit gdk_cairo_create



MBoerner
25-07-2012, 16:55
Hallo!
ich habe eine gtk2.0 Anwendung mit einem Glade file.
In dem Glade Dialog ist ein zeichenbereich (drawing-area) "darea1"
Ich wollte aber einen Frabverlauf ausprobioeren, wie eine Amleitung es beschreibt, habe aber immer eine Fehlermeldung:


Der Quelltext sieht so aus:
static gboolean on_expose_event(GtkWidget *widget,GdkEventExpose *event , gpointer data)
{
cairo_t *cr;
cairo_pattern_t *pat1;

cr = gdk_cairo_create(widget->window);<=== hier ist der Fehler, Field "window" couldn#t be resolved)

Ein ähnliches Problem habe ich bei bei anderen Anweisungen: zum Beispiel
width = var->widgets.current.draw_area->allocation.width;
Allocation_width ist angeblich nicht bekannt (not resolved), obwohl es eine allgemeoine Eigenschaft ist.
Hat jemand eine Idee? ich muss irgendwie vergessen haben, etwas einzubinden oder?

Danke im Voraus

MBoerner

anda_skoa
27-07-2012, 21:15
Ich denke nicht dass das Problem ein fehlendes Include oder ähnliches ist.

Gute APIs sind meistens so konstruiert das offentliche Klassen "opaque" sind, d.h. ihre Daten hinter einem internen Pointer versteckt werden und man über Zugriffsfunktionen damit arbeitet.

Das erlaubt den Entwickler der Bibliothek im Bedarfsfall die Interna zu ändern (z.B. neue Datenfelder hinzufügen), ohne dass sich für bestehende Software etwas ändert.

In deinem Fall wäre die Zugriffsfunktion vermutlich gtk_widget_get_window() also etwa so



cr = gdk_cairo_create(gtk_widget_get_window(widget));


Ciao,
_

MBoerner
10-08-2012, 09:44
ich hatte leider nicht gesehen, dass ich eine Antwort bekommen habe. Das war aber die Lösung.
Danke schön!