Problem solved.. I forgot to add fl_color to change the current color, so
inside the draw(), it still use the background color to draw the circle and
lines
Thanks
> Many thanks, I just rewrite the program, but the same problem still appear...
> alas..(raise the window after minimizing, there is nothing..)
> [Main function]
> Fl_Double_Window top_window(GLOBAL_WIDTH, GLOBAL_HEIGHT);
> Fl_Button *list_bt = new Fl_Button(10, 10, 100, 20, "Print Points");
> Fl_Button *hull_bt = new Fl_Button(120, 10, 100, 20, "Convex Hull");
> Fl_Window draw_window(0, 40, WINDOW_WIDTH,WINDOW_HEIGHT);
> MyDraw *draw = new MyDraw(0, 40, WINDOW_WIDTH,WINDOW_HEIGHT);
> list_bt->callback(list_callback, draw);
> hull_bt->callback(hull_callback, draw);
> draw_window.end();
> top_window.end();
> top_window.show(argc, argv);
> return Fl::run();
> [MyDraw Class is derived from Fl_Box]
> int MyDraw::handle(int e)
> {
> int ret = Fl_Box::handle(e);
> switch (e)
> {
> case (FL_PUSH):
> point = new MyPoint(Fl::event_x(), Fl::event_y());
> redraw();
> break; //exit switch case
> .....
> }
> void Mydraw::draw() {
> fl_circle(....)
> .....
> }
> >
> > > Hi, I am writing a small problem to implement an algorithm=20
> > > in graphics.
> > > And I inherit Fl_Window to catch mouse click to draw some=20
> > > circle and lines on it. It works fine, but after I minimizing=20
> > > my window, those lines never appear, the draw() function I=20
> > > override is called (since I put some printf inside for=20
> > > debugging; it only appear after I use mouse to click on the window.
> >
> >
> >
> >
> > > int MyWindow::handle(int e)
> > > {
> > > int ret =3D Fl_Window::handle(e);
> > > switch (e)
> > > {
> > > case (FL_PUSH):
> > > point =3D new MyPoint(Fl::event_x(), Fl::event_y());
> > > draw();
> > > break; //exit switch case
> > > case (FL_SHOW):
> > > printf("FL_VISIBLE\n");
> > > draw(); /** <-- want to draw after the window is=20
> > > bring up from minimized in the toolbar, and it DOES call=20
> > > MyWindow::draw, but it just don't show up immediately, it=20
> > > shows only after the next FL_PUSH happens !
> > > }//end switch case
> > > return ret;
> >
> >
> > OK, there are a few things to think about;
> >
> > - Firstly, as outlined in the docs, NEVER call the draw method directly.
> > Call redraw(), and allow the fltk rendering loop to manage the redraw
> > and expose events for you.
> > Also, a redraw will be scheduled after an expose event anyway, so what
> > you are doing in your handle method is unnecessary, it will be done
> > anyway.
> >
> > - Secondly, Fl_Window is a container widget, not really a surface on
> > which you should draw directly. You would probably be better off
> > deriving your drawing surface from a simple widget like Fl_Box and
> > drawing on that, enclosing your box-derived widget in an Fl_Window
> > container.
> >
> > This is all covered in the docs, and the worked examples in the "test"
> > directory show how to do this, so you should start by copying one of
> > those and extending it to your needs, to explore how this all works.
> >
> >
> >
> >
> >
> >
> >
> > SELEX Sensors and Airborne Systems Limited
> > Registered Office: Sigma House, Christopher Martin Road, Basildon, Essex=
> > SS14 3EL
> > A company registered in England & Wales. Company no. 02426132
> > ********************************************************************
> > This email and any attachments are confidential to the intended
> > recipient and may also be privileged. If you are not the intended
> > recipient please delete it from your system and notify the sender.
> > You should not copy it or use it for any purpose nor disclose or
> > distribute its contents to any other person.
> > ********************************************************************
> >
>
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk