FLTK : Togglebutton Value() Funktion funktioniert nicht?



  • Da ich bezweifle, dass sie nicht funktioniert bleibt nut noch der Schluss, dass der Fehler bei mir liegt.

    #include <FL/Fl.H>
    #include <FL/Fl_Window.H>
    #include <FL/Fl_Button.H>
    
    class simplewin : public Fl_Window
    {
          public:
    
          Fl_Button* but;
    
          simplewin(int w, int h, const char* title) : Fl_Window(w, h, title)
          {
                        begin();
    
                                but = new Fl_Button(10,10,200,50,"Aus");
                                but->type(FL_TOGGLE_BUTTON);
                                but->callback(but_cb,this);
                        show();
    
                        };
    
          private:
    
          static void but_cb(Fl_Widget*w,void*v)
          {
               ((simplewin*)v)->but_cb_e((simplewin*)v);
           };
    
          void but_cb_e(simplewin*win)
          {
               int x;
               x=win->but->value();
    
               if (x=1)
               {
                    win->but->label("An");
                                }
               else if (x=0)
               {
                    win->but->label("Aus");
               };
           };
    };
    
    int main (int argc, char ** argv)
    {
      simplewin win(225,75,"Hallo Welt");
      return(Fl::run());
    }
    

    Wie man wohl relativ schnell erkennen kann soll dieses Programm einen Toggle Button erzegen, auf dem im eingeschalteten Zustand "An" und sonst "Aus" steht. Leider funktioniert dies aber nicht, obwohl in der FLTK Referenz steht:

    For toggle and radio buttons, the value() method returns the current button state (0 = off, 1 = on).

    Wäre dies der Fall müsste mein Programm doch richtig funktionieren, aber es gibt nuneinmal die ganze Zeit "An" aus selbst, wenn der Knopf eindäutig wieder draussen ist. Was ist falsch?


  • Mod

    Du machst da nen typischen Anfängerfehler.
    == ist der Vergleichsoperator, und gehört daher auch in die if Bedingung.



  • recht hasst du!

    das kommt davon wenn man paralel basic, turbo pascal und c++ programmiert ^^


Anmelden zum Antworten