Funkcje callback FLTK
14 July 2008
Comments
Callback - Akcja i Reakcja
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
void buton_callback( Fl_Widget* o, void* ) {
Fl_Button* b=(Fl_Button*)o;
b->label("Jestem Kliknięty");
b->redraw();
}
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(600,300);
//button zwykły
Fl_Button *but = new Fl_Button(10,10,140,100,"Kliknij mnie!");
but->callback( buton_callback );
window->end();
window->show(argc, argv);
return Fl::run();
}
button->when(FL_WHEN_NEVER); // nigdy :) button->when(FL_WHEN_CHANGED); // gdy zmieniony button->when(FL_WHEN_RELEASE); // gdy puszczony button->when(FL_WHEN_RELEASE_ALWAYS); // zawsze gdy puszczany button->when(FL_WHEN_ENTER_KEY); // gdy wprowadzono klucz button->when(FL_WHEN_ENTER_KEY_ALWAYS); // zawsze gdy wprowadzono klucz button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED); but->when(FL_WHEN_RELEASE); but->callback( buton_callback );
Bardziej skomplikowany przykład obejmuje przekazywanie danych między widgetami:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Multiline_Input.H>
#include <FL/Fl_Help_View.h>
void buton_callback( Fl_Widget* o , void* ) {
Fl_Button* b=(Fl_Button*)o;
Fl_Multiline_Input* iw = (Fl_Multiline_Input*) b -> parent() -> child(1);
Fl_Help_View* ow = (Fl_Help_View*) b -> parent() -> child(2);
ow->value( iw->value() );
b->redraw();
}
int main() {
Fl_Window *window = new Fl_Window(600,300);
//button zwykły
Fl_Button *but = new Fl_Button(190,150,140,100,"Parsuj"); // child 0
but->when(FL_WHEN_RELEASE);
but->callback( buton_callback );
// Fl_Multiline_Input - wielowierszowe wprowadzanie tekstu
Fl_Multiline_Input *inp3 = new Fl_Multiline_Input(390,30,140,100,"Podaj kod HTML:"); // child 1
// wyświetla tekst, parsuje podstawowe tagi HTML
Fl_Help_View *inp7 = new Fl_Help_View(30,30,140,100,"Wynik:"); // child 2
window->end();
window->show();
return Fl::run();
}
RkBlog
Comment article