2012-09-10 41 views
1
#include "MessageBoxThread.h" 

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

MessageBoxThread::~MessageBoxThread(void) 
{ 
} 

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

問題正好是???你還有什麼錯誤?此外,除了GUI線程外,您不能在任何其他線程中顯示GUI元素。 –

+0

也許你可以添加一些你對這個問題的描述? – Marius

+0

從Qt中我知道,你不能在非GUI線程中執行任何與GUI相關的功能。我假設在wxWidgets中它是相似的。你將一個標誌傳給GUI線程,然後在那裏執行Show-method。 –

回答

2

要從wxThread docs報價:

GUI調用,比如那些到wxWindow的或wxBitmap是明確並不安全在所有二級螺紋和可能結束你的應用程序過早。這是由於幾個原因造成的,其中包括底層本機API以及wxThread不運行與MFC等其他API相似的GUI事件循環。 [...]推薦的方法是簡單地處理GUI在主線程通過由wxQueueEvent()發佈了一個事件調用

所以基本上解決這個問題的最好辦法是,而不是調用展上創建一個事件(例如一個wxThreadEvent)將其發回到對話框,然後使用事件宏或綁定將其連接到顯示對話框的對話框成員。