#include <gtkmm/main.h>
#include <gtkmm/window.h>
#include <gtkmm/box.h>
#include <gtkmm/label.h>
#include <gtkmm/entry.h>
#include <gtkmm/button.h>

struct param {
	Gtk::Entry *e;
	Gtk::Label *l;
};

void on_button_clicked(param p) {
	p.l->set_text("Bonjour " + p.e->get_text() + " !");
}

int main(int argc, char **argv)
{
    Gtk::Main app(argc, argv);
    Gtk::Window w;
    Gtk::VBox vb;

    Gtk::Label l;
    vb.pack_start(l);
    l.show();
    Gtk::Entry e;
    vb.pack_start(e);
    e.show();
    Gtk::Button b("Bonjour !");
    param p = { &e, &l };
    b.signal_clicked().connect(SigC::bind<param>(SigC::slot(&on_button_clicked), p));
    vb.pack_start(b);
    b.show();

    w.add(vb);
    vb.show();
    app.run(w);
    return 0;
}
