// @topic W040103 FLTK FLUID -- timer // @brief class CTimerWindow implementation // CTimerWindow.cpp #include <sstream> #include <string> #include "CTimerWindow.h" CTimerWindow::CTimerWindow() { m_is_animated = false; m_count = 0; } void CTimerWindow::show() { m_btn_start->callback( (Fl_Callback*) cb_btn_start_callback, this ); m_btn_stop->callback( (Fl_Callback*) cb_btn_stop_callback, this ); m_win_timer->show(); } void CTimerWindow::cb_btn_start_callback( Fl_Widget* btn, void* userdata ) { CTimerWindow* window = ( CTimerWindow* ) userdata; window->m_win_timer->label( "start" ); // set window title window->m_is_animated = true; Fl::add_timeout( TIMER_TIMEOUT, timer_event, window ); } void CTimerWindow::cb_btn_stop_callback( Fl_Widget* btn, void* userdata ) { CTimerWindow* window = ( CTimerWindow* ) userdata; window->m_is_animated = false; window->m_win_timer->label( "stop" ); } void CTimerWindow::timer_event( void* userdata ) { CTimerWindow* window = ( CTimerWindow* ) userdata; if ( window->m_is_animated ) { ++( window->m_count ); std::stringstream buffer; buffer << window->m_count; window->m_win_timer->label( buffer.str().c_str() ); Fl::add_timeout( TIMER_TIMEOUT, timer_event, window ); } }