我使用wxwidgets
在窗口中进行项目,然后尝试在linux上运行它,但是冻结和解冻功能出现问题。
可以在linux上使用吗?还有其他冻结窗口的选项吗?
这是mycode:
void *UpdateModeltreeThread::Entry()
{
m_PtrTree->Freeze();
m_PtrTree->ProcessUpdateModelTree();
m_PtrTree->Thaw();
return NULL;
}
注意:我正在使用wxThread在上面运行
ProcessUpdateModelTree()
在此函数中,我向wxtreelistctrl添加treeitems,那里有很多treeitems,所以我使用了冻结和解冻功能,在后台使用线程功能运行,它在Windows中工作,但在Linux中不工作问题:在Freeze()和Thaw()的调用油漆事件中间,因为它在treelistctrl油漆事件中崩溃,但是该东西未在窗口中弹出
最佳答案
您绝对不能从工作线程中调用GUI方法,例如Freeze()
和Thaw()
,就像您在这里所做的那样。您必须调用它们,或者最好在主线程中使用更安全的wxWindowUpdateLocker。
关于c++ - Linux中wxwidgets中的Freeze()和Thaw()函数出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21329369/