C FLTK 1.3.2:最新的屏幕,处理事件和非障碍睡眠

C++ FLTK 1.3.2: up-to-date screen, handling events and non-blocking sleep

本文关键字:处理事件 屏幕 FLTK 最新      更新时间:2023-10-16

我正在编写基于FLTK的GUI应用程序-RAM机器。

我希望我的方法在每个执行订单后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

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