我使用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/

10-11 22:44