Ein Programm, welches auf Knopfdruck ein leeres Fenster öffnet |
Fl_Window*
return w;
Zur Erklärung: FLUID legt im späteren Quelltext immer beim Einbau eines Fenster einen Pointer mit dem Namen w an, sowohl in der main()-Methode als auch bei allen anderen Fenstern. Und da unsere Funktion noch keine Rückgabeanweisung hat, muss diese nun manuell eingefügt werden, dabei muss man die strikte Quelltext-Generierung von FLUID "missbrauchen".
static void Button_CB(Fl_Widget*,void*)
NewWindow()->show();
Zur Erklärung: NewWindow() ist klar, das ist der Funktionsname der zuvor angelegten Funktion. An dieser Stelle liegt jetzt also irgendwo ein Pointer w, der auf ein fertiges Fenster zeigt. Mit der Klassenfunktion show() wird dieses nun angezeigt. So setzt sich diese Codezeile zusammen.
Hinweis: Es ist egal, ob in der Hierachie erst die NewWindow()- und danach die Button_CB(...)-Funktion oder umgedreht.
Tutorial-3-1.fl | Tutorial-3-1.h | Tutorial-3-1.cpp |
Ein Programm, welches auf Knopfdruck ein leeres Fenster öffnet und auf Knopfdruck wieder schlie�t |
SubWindow->hide(); delete SubWindow;
Zur Erklärung: Die allgemein übliche Methode ein FLTK-Fenster zu schlie�en funktioniert über die hide()-Funktion. Die
Referenzierung erfolgt durch den Pointernamen SubWindow, den unser Fenster (NICHT HAUPTFENSTER) trägt.
Der zweite Befehl löscht darüber hinaus das Fenster und räumt es aus dem Speicher.
Tutorial-3-1.fl | Tutorial-3-1.h | Tutorial-3-1.cpp |
Ein Programm, welches Berechnungen am Kreis ausführt |
const double pi = 3.1416;
string outstring; stringstream outstream; outstream<<wert; outstring = outstream.str(); return outstring.c_str();
Ich habe an dieser Stelle bewusst die std-Präfixe weggelassen, weil ich später über eine Code-Declaration die Zeile "using namespace std;" eintrage. So erspare ich mir, überlegen zu müssen, wann ich dieses std bei welchem Befehl setzen muss.
return w;
istringstream sRadius (Radius_input->value()); sRadius>>radius; umfang = 2*pi*radius; flaeche = pi*radius*radius;
Es folgt im zweiten Fragment die Ausgabeanweisungen an die Ausgabefelder im Hauptfenster. An dieser Stelle wird ersichtlich,
warum sich das Anlegen der MakeString-Funktion gelohnt hat, denn sonst müsste man die String-Konvertierung für jedes
Parameter einzeln behandeln.
Radius_output->value(MakeString(radius)); Umfang_output->value(MakeString(umfang)); Flaeche_output->value(MakeString(flaeche));
Im letzten Code-Fragment wird das Eingabefenster erst versteckt und anschlie�end der Pointer aus dem Speicher gelöscht.
Ersteres geht über die Funktion "hide()", die zur Klasse Fl_Window gehört. Das Löschen erfolgt über den Befehl "delete".
Radius_Window->hide(); delete Radius_Window;
RadiusInput()->show();
Tutorial-3-1.fl | Tutorial-3-1.h | Tutorial-3-1.cpp |