在linux中的wxwidgets中使用Freeze(),Thaw()函数的问题

时间:2014-01-24 09:48:42

标签: c++ visual-c++ wxwidgets

我使用wxwidgets在窗口中进行了项目,然后我尝试运行它,但是我遇到了冻结和解冻功能的问题。

它适用于linux吗?还有其他选项来冻结窗口吗?

这是我的代码:

void *UpdateModeltreeThread::Entry()
{
    m_PtrTree->Freeze();

    m_PtrTree->ProcessUpdateModelTree();

    m_PtrTree->Thaw();

    return NULL;
}

注意:我正在使用wxThread运行

ProcessUpdateModelTree()在这个函数中我将树项添加到 wxtreelistctrl 有多个treeitems,所以我使用冻结和解冻,使用线程函数运行在后端在Windows中工作但不在Linux中工作

问题:在Freeze()&中间Thaw()它的调用绘制事件,因为它在treelistctrl绘制事件中崩溃,但是这个东西不是在窗口中讨厌

1 个答案:

答案 0 :(得分:1)

你绝对无法从工作线程中调用GUI方法,例如Freeze()Thaw(),就像你在这里做的那样。你必须打电话给他们,或者更好的是,从主线程中使用更安全的wxWindowUpdateLocker