870920 Menu

JUCE复合控件之ThreadWithProgressWindow

ThreadWithProgressWindow为使用后台线程并模态显示的进度条窗口(带有进度条的消息窗),可带有【取消】按钮。该类是一个抽象基类,并没有继承自Component类,而是继承自Thread和Timer这两个类,虽实现了Timer类的纯虚函数timeCallback(),但没有实现Thread类的纯虚函数run()。因此,使用本类完成进度条窗口功能时,必须派生子类。

ThreadWithProgressWindow类的构造函数(后3个参数有默认值):

ThreadWithProgressWindow (1参窗口标题, 2参是否显示进度条, 3参是否显示【取消按钮】, 4参退出线程的超时时间, 5参【取消】按钮的文本, 6参出现在哪个组件的中心)

本类的重要成员函数
 runThread () 启动线程,模态运行,默认优先级为5
 setProgress () 设置进度条的进度值(百分比),该函数应由run()循环调用
 setStatusMessage () 设置对话框中显示的文本消息
 getAlertWindow () 返回所使用的AlertWindow,可利用该对象添加更多的控件

使用流程

1、自定义进度窗类,继承自ThreadWithProgressWindow。初始化基类,实现run()函数。要执行的功能性处理和刷新进度条状态等代码均在run()函数中完成,这是本类的核心与重点。

2、内容组件类的有关函数中创建进度窗对象,该对象调用runThread()函数。runThread()方法在启动进度窗之后,还将返回一个bool值,如果为true,则说明进度窗的run()方法顺利执行完毕;如果为false,则表示未成功执行完毕,比如用户点击【取消】按钮或按下ESC强行终止了处理。可根据此返回值做针对性的编码,给出提示消息等等。注意:runThread()内部调用进度窗的run()函数,这个步骤无需显式编码。

ThreadWithProgressWindow属于JUCE的“重量级”进度窗。如需轻量的进度指示,可使用控件式的ProgressBar,详情请点此参阅