c++ - Linux wxwidgets 中的 Freeze() 和 Thaw() 函数问题

标签 c++ visual-c++ wxwidgets

我在窗口中使用 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/

相关文章:

c++ - OpenCV Flann - 断言失败

c++ - 以编程方式安装字体

c++ - MFC - 如何在运行时更新编辑框? (C++)

c++ - 错误时显示错误消息框。我怎样才能显示它?

c++ - USACO 牛栏板 : Dinic's Algorithm/Changes to Pointer Not Registering

c++ - 我需要什么硬件/软件才能将我的 C++/wxWidgets 应用程序移植到 MAC?

c++ - 如何创建一个以 HWND 作为父级的 QWidget?

c++ - 如何循环遍历 std::set/add 条件中的元素到 std::for_each 而不是 vs2008 中的 std::set?

c++ - 为函数分配空间然后从函数中删除空间是不好的做法吗

c++ - 如何使 Visual Studio C++ 2010 编译行为像 gcc/g++? (或相反亦然)