我正在使用" 使用C++编程原理和实践 "一书学习c ++.第16章介绍了通过接口库使用FLTK库的gui部分的技术.
本章中的练习之一是动画图像的动画,由一个类中实现的启动和停止按钮控制.对于计时我发现使用FLTK Fl::add_timeout
并且Fl::repeat_timeout
是一个比进入无限循环更好的解决方案并使用Sleep(),阻止其他回调.
我没有成功使用Fl::add_timeout
和实现工作解决方案Fl::repeat_timeout
,但是在这里使用带有开始和停止按钮的进度条找到了一个示例:
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Progress.H>
#include <FL/Fl_Button.H>
Fl_Progress* progBar;
void runcount(void*)
{
if (progBar->value() == progBar->maximum())
{
Fl::remove_timeout(runcount);
progBar->value(0);
}
else
{
Fl::repeat_timeout(1, runcount);
progBar->value(progBar->value() + 1);
}
}
void cb_startb(void)
{
Fl::add_timeout(1, runcount);
}
void cb_stopb(void)
{
Fl::remove_timeout(runcount);
}
int main (int argc, char *argv[])
{
Fl_Double_Window window(200,70,"ProgressBar Test");
progBar = new Fl_Progress(5, 10, window.w()-10, 20);
progBar->box(FL_SHADOW_BOX);
progBar->selection_color((Fl_Color)4);
progBar->minimum(0);
progBar->maximum(10);
Fl_Button* …
Run Code Online (Sandbox Code Playgroud)