wxPanel show函数在wxThreads中不起作用

时间:2012-09-10 10:35:15

标签: c++ wxwidgets messagebox

#include "MessageBoxThread.h"

MessageBoxThread::MessageBoxThread(NfcUIConfirmProcessUC* dialogUC)
{
    this->dialogUC = dialogUC;
}

MessageBoxThread::~MessageBoxThread(void)
{
}

void* MessageBoxThread::Entry()
{
    this->dialogUC->Show(true);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

引用wxThread docs

  

GUI调用(例如wxWindow或wxBitmap的调用)在辅助线程中显然是不安全的,并且可能会过早地终止您的应用程序。这是由于几个原因,包括底层的本机API以及wxThread没有像MFC那样运行类似于其他API的GUI事件循环这一事实。 [...]建议的方法是通过wxQueueEvent()

发布的事件简单地处理主线程中的GUI调用。

所以基本上解决这个问题的最好方法是调用Show来创建一个事件(例如一个wxThreadEvent),然后将它发布回对话框然后使用事件宏或绑定将它连接到一个对话框成员,它显示了对话框。