【问题标题】:Issue with Freeze() , Thaw() function in wxwidgets in linuxlinux 中 wxwidgets 中的 Freeze() 和 Thaw() 函数的问题
【发布时间】:2014-02-15 06:03:10
【问题描述】:

我使用wxwidgets 在窗口中进行了项目,然后我尝试在 linux 上运行它,但 freeze&thaw 功能出现了一些问题。

它适用于 linux 吗?有没有其他选项可以冻结窗口?

这是我的代码:

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

    m_PtrTree->ProcessUpdateModelTree();

    m_PtrTree->Thaw();

    return NULL;
}

注意:我正在使用 wxThread 运行上面的东西

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

问题:在 Freeze() 和 Thaw() 中间调用绘制事件,因为它在 treelistctrl 绘制事件中崩溃,但这个事情在窗口中没有发生

【问题讨论】:

  • 定义“一些问题”。 编辑: 见这里:trac.wxwidgets.org/ticket/10748
  • 5年前长大的?这就是为什么我更喜欢 Qt
  • @enhzflep 查看我的更新数据
  • @srinivas - 我现在明白你想要做什么,但仍然不知道你面临的问题是什么。即 - 冻结/解冻什么都不做?在冻结状态下,您是否会看到控件闪烁?如果窗口处于冻结状态,您是否会收到错误的更新。就目前而言,问题对我(和其他人?)来说并没有你想象的那么清楚。
  • @enhzflep 很抱歉数据不正确,你现在可以看到我的问题

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


【解决方案1】:

您绝对不能从工作线程调用 GUI 方法,例如 Freeze()Thaw(),就像您在这里所做的那样。您必须调用它们,或者最好在主线程中使用更安全的wxWindowUpdateLocker

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2019-05-31
    • 2014-03-02
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多