我有一个相当简单的问题,我似乎无法解决。wxWidgets应用程序循环幻灯片
我想编写一个幻灯片演示程序,每次幻灯片更改时也播放一个音频文件。这些音频文件的长度有所不同,我不想让程序循环播放下一个条目/图片,直到声音播放完毕。
目前我实现了一个循环:
void UI_BRAINWASH::PlaySound_top()
{
wxString tmppath(parent->get_currentdirect()+parent->current_db.get_card(m_index)->get_topentryaudiopath());
ISound* firstsound = this->engine->play2D(tmppath.mb_str(), false, false, true);
while(engine->isCurrentlyPlaying(tmppath.mb_str()))
{
StaticTextTop->GetParent()->Update();
//wxSleep(3);
}
m_timer->Start(1000);
}
这遍历条目如预期,一切都是花花公子......
不过,我想,是可以通过按Escape键来中止程序,但while循环显然阻碍了我做这件事。 我也注意到,在循环显示图片时,我无法移动窗口或关闭程序。
所以我看了看线程和wxIdleevent类。在:wxwidgets/samples/threads /是一个“工作线程”的例子,这似乎是我需要的。
我现在的问题是:线程不是一个简单的幻灯片矫枉过正? 是否有另外一种/更好的方式循环播放我的条目 - 等待播放的声音,更新gui并且还能够移动窗口?