#include <FL/Fl.h>
#include <FL/Fl_Window.h>
#include <FL/Fl_Button.h>
#include <FL/Fl_Input.h>
#include <FL/Fl_Output.h>
#include <string>


class ZazouFenetre : public Fl_Window
{
Fl_Input* entree;
Fl_Output* sortie;

static void cb_bouton(Fl_Widget* w, void* data);

public:
	ZazouFenetre (int w, int h, const char* titre);
	
};

ZazouFenetre::ZazouFenetre (int w, int h, const char* titre) : Fl_Window(w, h, titre)
{
	sortie = new Fl_Output(20, 10, 200, 20);
	sortie->box(FL_NO_BOX);
	entree = new Fl_Input(20, 30, 200, 20);
	Fl_Button* bouton = new Fl_Button(70, 60, 100, 30, "Bonjour !");
	bouton->callback(cb_bouton, (void*)this);
	 
	show();
}

void ZazouFenetre::cb_bouton(Fl_Widget* w, void* userdata) 
{
	ZazouFenetre* userobj = static_cast<ZazouFenetre*>(userdata);
	std::string str("Bonjour ");
	str += userobj->entree->value();
	str += " !";

	userobj->sortie->value (str.c_str());
}

int main(int argc, char **argv) {
  ZazouFenetre fen(240, 100, "Bonjour toi !");
  return Fl::run();
}
