我在窗口中使用 wxwidgets
进行了项目然后我试图在 linux 上运行它但是我在使用 freeze&thaw 函数时遇到了一些问题。
它能在 linux 上工作吗?还有其他选项可以卡住窗口吗?
这是我的代码:
void *UpdateModeltreeThread::Entry()
{
m_PtrTree->Freeze();
m_PtrTree->ProcessUpdateModelTree();
m_PtrTree->Thaw();
return NULL;
}
注意:我正在使用 wxThread 运行上面的东西
ProcessUpdateModelTree()
在此函数中,我将树项添加到 wxtreelistctrl 那里有许多树项,所以我使用卡住和解冻,使用线程函数在后端运行 < strong>它在 windows 中工作但在 linux 中不工作
问题:在 Freeze() 和 Thaw() 调用绘制事件的过程中,因为它在 treelistctrl 绘制事件中崩溃了,但是这个东西在窗口中没有发生
最佳答案
您绝对不能从工作线程调用 GUI 方法,例如 Freeze()
和 Thaw()
,就像您在这里做的那样.你必须调用他们,或者更好的是,使用更安全的 wxWindowUpdateLocker来自主线程。
关于c++ - Linux wxwidgets 中的 Freeze() 和 Thaw() 函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329369/