Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Mausbewegung - gtkmm

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.02.2002
    Beiträge
    7

    Mausbewegung - gtkmm

    Hi,

    Ich versuch schon lange Zeit vergebens ein kleines GTK Programm zu schreiben welches nichts anderes tut, als die aktuelle Mausposition auszugeben. Hab schon herum gegoogelt (auf der gtkmm seite gibts zwar tutorials aber dort kommt die MouseMotion irgendwie zu kurz) und folgenden Block fuer interessant empfunden.


    bool print2(GdkEventMotion *event)
    {
    int mouse_x, mouse_y;
    mouse_x = event->x;
    mouse_y = event->y;
    std::cout <<"mouse xy: " << mouse_x << "," << mouse_y << "\n";
    return true;
    }

    mein Problem ist aber, dass mit gcc sagt, dass event keinen Member x bzw. y hat. Hmmm event ist doch von GdkEventMotion vordefiniert. Vielleicht stammt der Code nocht von aelteren Versionen. ...

    Hat jemand eine Ahnung wie ich auf die aktuelle Mausposition zugreifen kann? Hab ich etwas uebersehen?

    lg,

    Andreas

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.07.2003
    Beiträge
    147
    also ich hab noch nicht mit gtkmm gearbeitet, aber in c gibt es die Eintraege schon:

    http://developer.gnome.org/doc/API/2...GdkEventMotion

    Code:
    struct GdkEventMotion {
    
      GdkEventType type;
      GdkWindow *window;
      gint8 send_event;
      guint32 time;
      gdouble x;
      gdouble y;
      gdouble *axes;
      guint state;
      gint16 is_hint;
      GdkDevice *device;
      gdouble x_root, y_root;
    };
    allerdings sind das keine int sonder double. vielleicht hilft das weiter.

    mfg

    c.

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.02.2002
    Beiträge
    7

    leider nein

    Auch mit double findet er x,y nicht ...

    Danke trotzdem,

    Andreas

  4. #4
    Registrierter Benutzer
    Registriert seit
    03.02.2002
    Beiträge
    7

    okay ich versuchs in c ...

    Hi,

    da ich mit gtkmm nichts erreicht habe - habe ich es mal in c versucht ...
    irgendwie ruehrt sich aber nichts. nicht mal eine Fehlermeldung. Das Programm soll nichts weiter machen als die Koordinaten der Maus ausgeben ...

    lg,
    Andreas

    Code:
    #include <gtk/gtk.h>
    #include <stdio.h>
    
    
    int print2(GdkEventMotion *event)
    {
      gdouble mouse_x, mouse_y;
      mouse_x = event->x;
      mouse_y = event->y;
      g_print(stdout,"mouse_y: %d, mouse_x %d\n",mouse_x,mouse_y);
      return 0;
    }
    
    
    int main( int   argc,char *argv[] )
    {
        GtkWidget *window;
        GtkWidget *button;
        int x,y;
    
        gtk_init (&argc, &argv);
    
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    
    
        g_signal_connect (G_OBJECT (window),"motion_notify_event",
                          G_CALLBACK (print2), NULL);
    
        g_signal_connect (G_OBJECT (window), "destroy",
                            G_CALLBACK (gtk_main_quit), NULL);
    
        gtk_widget_show(window);
    
        gtk_main ();
    
    
        return(0);
    }
    Edited by moderator: Codetags!

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.07.2003
    Beiträge
    147
    Ich glaube print2() sollte anders aufgebaut sein:

    http://developer.gnome.org/doc/API/2...n-notify-event

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •