C ++ FLTK 1.3.2:最新的屏幕,处理事件和非阻塞睡眠

时间:2014-01-29 03:55:29

标签: c++ user-interface sleep fltk

我正在编写一个基于FLTK的GUI应用程序 - RAM Machine。

我希望我的方法在每个执行的订单后让我们睡觉1秒钟,让屏幕保持最新和可访问,而不是同时阻止事件处理等。 问题是我使用的每个功能都会随机休眠。

例如:

void FlowControl::_runProgram (void) {

//Inside a loop:

    _step(); //execute next order
    clock_t start = timer.start(); //initialize clock
    do{
        //wait max. 1-passed_time() [seconds] until 'something happens'
        Fl::wait(1-timer.passed_time()); 

    }while ( timer.passed_time() < 1 ); // check if 1 second has passed

    //...
}

结果:GUI没有阻塞,一切正常但我必须在0到6(!!)秒之间等待,而不是下一步的一秒钟。

我已经尝试过: Fl :: wait()/ Fl :: check()/ Fl :: ready()+ Sleep()/ SetTimer()/ clock_t / time_t,有或没有多线程。

如何解决这个问题?

FLTK doc: http://www.fltk.org/doc-1.3/index.html

1 个答案:

答案 0 :(得分:1)

我能想到的最简单方法是使用Fl::add_timeout()Fl::repeat_timeout()函数。请查看Greg Ercolano在这个小型演示中如何做到的示例:http://seriss.com/people/erco/fltk/#AnimateDrawing