我正在编写一个基于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
答案 0 :(得分:1)
我能想到的最简单方法是使用Fl::add_timeout()
和Fl::repeat_timeout()
函数。请查看Greg Ercolano在这个小型演示中如何做到的示例:http://seriss.com/people/erco/fltk/#AnimateDrawing