Re: the filled polygon. The polygon is made up of vertices: not of lines. It doesn't know about lines. Use fl_vertex instead of fl_line.
Re: fl_box There are two fl_boxes, depending on case.
fl_box sets the box type Fl_Box from Fl_Box.H draws a box. The redraw code will automatically redraw it if it is damaged. Say the widget is called box. Call box->damage(FL_USER1) to force a redraw.
For more tricks, have a look at http://seriss.com/people/erco/fltk/