[SDL] Mausabfrage



  • Hi,

    ich weiß einfach nicht mehr weiter. Ich hab ein ganz simples Problem, doch irgendwie lässt es sich nicht lösen.
    In meinem Programm möchte ich eine Mausabfrage in einer Funktion durchführen, die überprüft, ob die linke Maustaste gedrückt wurde.
    Zur Veranschaulichung hier ein Pseudocode:

    class Klasse
    {
    protected:
    SDL_Event mouse_event;
    
    public:
    void mouse();
    
    };
    
    void Klasse::mouse()
    {
    if(mouse_event.button.button == SDL_BUTTON_LEFT)
    {
    printf("\nLinke Maustaste wurde gedrückt");
    }
    }
    
    int main(int argc, char* argv[])
    {
    SDL_Event event; 
    int done;
    
    Klasse vererbung;
    
    //...
    
    done = 0;
      while ( ! done ) {
          while ( SDL_PollEvent(&event) ) {
            if ( event.type == SDL_QUIT ) {
              done = 1;
            }
    
            }
    
    vererbung.mouse();
    
    }
    
    return 0;
    }
    

    Aber wenn ich jetzt die linke Maustaste drücke passiert rein garnichts. Wenn ich jedoch die Mausabfrage in der Hauptschleife an der Stelle von vererbung.mouse() tätige, funktioniert dies.(statt mouse_event dann natürlich event). Auch wenn ich SDL_PollEvent() in der Funktion verwende funzt das nicht.
    Könnt ihr mir helfen?

    Gruß Crabbe



  • LOL! Lieber Debugger und Hirn benutzen als sich dermassen zu blamieren.

    Bye, TGGC (Keine Macht den Dummen)



  • Woher bekommt deine Klasse denn die Information über den Inhalt des Mouseevents??

    Also wenn du eine leere Datenstruktur auf irgendwas untersuchst.. viel spaß



  • Hm mal davon abgesehen das du bei dem Programmier"stil", dem Mix aus C und C++ und den recht miesen Einrückungen spätestens nach einem Projekt was über 2 Seiten geht(allerspätestens 😉 ) überhaupt nichts mehr raffen wirst, würd ich mal

    while ( SDL_PollEvent(&event) ) 
    {
      if ( event.type == SDL_QUIT ) 
      {
        done = 1;
      }
    
      if(event.button.button == SDL_BUTTON_LEFT)
      {
        done = 1; // wenn linke Maustaste dann beendet sich das Programm
      }
    }
    

    versuchen oder wie schon gesagt mouse_event mal füllen, wobei das sich mit event gegenseitig behindern könnte.



  • DocJunioR schrieb:

    Woher bekommt deine Klasse denn die Information über den Inhalt des Mouseevents??

    Also wenn du eine leere Datenstruktur auf irgendwas untersuchst.. viel spaß

    Hier liegt der Fehler. 👍


Anmelden zum Antworten