我有一个带有进度条的wxWidgets表单,我使用自己的自定义wxWidget事件从一个线程更新进度。这工作正常,但事实是表单只显示移动鼠标时的进度更新。我设法在设置新的进度值之后添加Refresh()和Update(),但没有运气。
我做错了什么,或者这是wxWidgets的故障?
Windows 7 visual studio 2005 c ++
编辑:
这是我当前的线程回调:
EVENT_CALLBACK_PTR_CPP(onProgress, UploadProgPage)
{
updateInfo* temp = static_cast<updateInfo*>(ptr);
if (temp)
{
wxOnUploadUpdateEvent event(wxEVT_UPLOAD_UPDATE, GetId(), temp, UPDATE_PROGRESS);
event.SetEventObject(this);
GetEventHandler()->AddPendingEvent(event);
}
}
进度更新:
void UploadProgPage::onUpdate(wxOnUploadUpdateEvent &event)
{
if (event.type == UPDATE_PROGRESS)
{
m_pbProgress->SetValue(event.info->precent);
Refresh(false);
}
}
答案 0 :(得分:1)
我解决了这个问题。因为SetTopWindow();当我从我的应用程序中删除此行时,所有事件都会在适当的时候处理。