GTK2/C, Zeiger auf Strukturen über mehrere Funktionen

OP #4989437
Lesenswert?

Bei mir haberts gerade an dem Verständnis:
GTK2-Applikation mit Spin-Button, die dazugehörigen ENTRY-Felder und die 
Spin-Buttons will ich zur Laufzeit verändern.

Da ganze aus der Unterfunktion für das Zeichnen der Kurve, diese wir 
aufgerufen wenn:
Zeitgesteuert die Werte vom Meßgerät geholen werden
Die Werte aus einem File eingelesen werden
Ausgabe als PDF/PNG

Aufbau ist wie folgt
Main -> Callback oder Timerfunction -> Einlesefunktion File/Bus oder 
eine der drei Zeichenfunktion.

Codeausschnitt:

typedef struct {
  GtkWidget *window;
  GtkWidget *gw_set_maxtime;
  GtkWidget *gw_set_mintime;
  GtkWidget *gw_set_average_window;
  GtkWidget *gw_set_max;
  GtkWidget *gw_set_min;
  GtkWidget *gw_max;
  GtkWidget *gw_min;
  GtkWidget *gw_maxtime;
  GtkWidget *gw_menuitem_start;
  GtkAdjustment *adj_set_max;
  GtkWidget *filesel;
} r2101_data;

main:

  r2101_data wg_data;
...
  adj_set_maxtime = (GtkAdjustment *) gtk_adjustment_new 
(1,0,1000000,1,10,0);
  gw_set_maxtime = gtk_spin_button_new(adj_set_maxtime,0,0);
  gtk_signal_connect(GTK_OBJECT(gw_set_maxtime), 
"value-changed",GTK_SIGNAL_FUNC(screen_refresh),(gpointer*) &wg_data)
...
  wg_data.gw_set_maxtime = gw_set_maxtime;

Callback

void screen_refresh(GtkWidget *widget, r2101_data *data) {
  gint width,  height;            // Window width & height

  cairo_t *cr;

  cr = gdk_cairo_create(widget->window);

  gdk_drawable_get_size(widget->window, &width, &height);

  plot(cr, width,height,?????);

  cairo_destroy(cr);
}

void plot(cairo_t *cr, gint  width, gint height, r2101_data *data) {

  gdouble    MAX_X = record_counter;  // max X scale

  MAX_X = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->set_maxtime));
}


Der Compilier meldet aber:
racal2101-plot.c:574:56: error: ‘r2101_data {aka struct <anonymous>}’ 
has no member named ‘set_maxtime’

Wie muss ich die Funktion plot korrekt deklarieren und dann aufrufen? 
Über eine Ebene geht das.

Gruß Andreas
Gast #4989440
Lesenswert?

Andreas F. schrieb:
> Der Compilier meldet aber:
> racal2101-plot.c:574:56: error: ‘r2101_data {aka struct <anonymous>}’
> has no member named ‘set_maxtime’
Das Ding heisst ja auch
1
gw_set_maxtime
und nicht
1
set_maxtime
aber das sagt dir der Compiler ja.

Und aufrufen must du das dann so:
1
void screen_refresh(GtkWidget *widget, r2101_data *data) {
2
  ...
3

4
  plot(cr, width, height, data);
5

6
  ...
7
}
OP #4989577
Lesenswert?

Kaj schrieb:
> Andreas F. schrieb:
>> Der Compilier meldet aber:
>> racal2101-plot.c:574:56: error: ‘r2101_data {aka struct <anonymous>}’
>> has no member named ‘set_maxtime’
> Das Ding heisst ja auch
>
1
> gw_set_maxtime
2
>
> und nicht
>
1
> set_maxtime
2
>
> aber das sagt dir der Compiler ja.

Asche über mein Haupt:
Das kommt davon wenn man im Code Fehler sucht, anfängt Variablen 
umzubennen und dann nicht irgendwann den Überblick verliert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren