button.C

#include <stdlib.h>
#include <stdio.h>
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>

void beepcb(Fl_Object *, void *) {
  printf("\007"); fflush(stdout);
}

void exitcb(Fl_Object *, void *) {
  exit(0);
}

int main(int argc, char ** argv) {
  Fl_Window *window = new Fl_Window(320,65);
  window->begin();
  Fl_Button *b1 = new Fl_Button(20, 20, 80, 25, "Beep");
  b1->callback(beepcb,0);
  Fl_Button *b2 = new Fl_Button(120,20, 80, 25, "no op");
  Fl_Button *b3 = new Fl_Button(220,20, 80, 25, "Exit");
  b3->callback(exitcb,0);
  window->end();
  window->show(argc,argv);
  while (1) Fl::wait();
}

In this example we make some button objects and make them do something through callbacks.

All objects have a single callback() function. It is called in response to an event on that object, exactly which event depends on the type of object. The function takes two arguments: a pointer to the object (you will usually need to cast this to the correct subclass) and a void* pointer to a piece of arbitrary user_data.

You don't have to give all the objects a callback, as the "no op" b2 object demonstrates. What these do is described in the next program.

[Next example]
[back to contents]