运行代码:
//My_window类(带有next和quit按钮)
#include"std_lib_facilities.h"
#include"GUI/Simple_window.h"
#include"GUI/GUI.h"
#include"GUI/Graph.h"
#include"GUI/Point.h"
//-------------------------------------------------------------------------------
class My_window :public Window
{
public:
	My_window(Point xy, int w, int h, const string& title);
	bool wait_for_button(); // simple event loop
private:
	Button next_button;     
	bool button_pushed;     
	Button quit_button;
	bool quit_pushed;
	static void cb_next(Address, Address); 
	void next();
	static void cb_quit(Address, Address);
	void quit();
};
//-------------------------------------------------------------------------------
My_window::My_window(Point xy, int w, int h, const string& title) :
    Window(xy, w, h, title),
    next_button(Point(x_max() - 70, 0), 70, 20, "Next", cb_next),
    button_pushed(false),
	quit_button(Point(x_max()-70,25),70,20,"Quit",cb_quit),
	quit_pushed(false)
{
    attach(next_button);
	attach(quit_button);
}
//------------------------------------------------------------------------------
bool My_window::wait_for_button()
{
    if(!quit_pushed)show();
	if (quit_pushed) {hide(); return quit_pushed;}
    button_pushed = false;
#if 1
    while (!button_pushed&&!quit_pushed) Fl::wait();
    Fl::redraw();
#else
	if Fl::run();
#endif
    return button_pushed;
}
//------------------------------------------------------------------------------
void My_window::cb_next(Address, Address pw)
{
    reference_to<My_window>(pw).next();
}
//------------------------------------------------------------------------------
void My_window::next()
{
    button_pushed = true;
    hide();
}
//------------------------------------------------------------------------------
void My_window::cb_quit(Address, Address pw)
{
	reference_to<My_window>(pw).quit();
}
//------------------------------------------------------------------------------
void My_window::quit()
{
    quit_pushed=true;
}
//------------------------------------------------------------------------------
int main()
try
{
	My_window win(Point(100, 100), 600, 400, "My_window");
	win.wait_for_button();
}
catch (exception& e) {
	cerr << "error:" << e.what() << '\n';
	keep_window_open();
	return 1;
}
catch (...) {
	cerr << "Oops:unknown exception!\n";
	keep_window_open();
	return 2;
}
//--------------------------------------------------------------------------------- 
运行结果:


















