2012-12-19 44 views
1

我創造我自己的wxDialog的子類,作爲一個無模式對話框,像這樣使用時,它工作得很好:wxWidgets的 - 無模式wxDialog

AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _T("Dialog Title"), wxDefaultPosition, wxDefaultSize, 0); 
if (newAddDialog.ShowModal() == wxID_OK) 
{ 
//do something 
} 

使用的ShowModal(),該計劃的流動停止,直到確定或取消被按下。我需要在對話框中顯示,但不停止GUI的流量,所以我想這:

AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _T("Dialog Title"), wxDefaultPosition, wxDefaultSize, 0); 
if (newAddDialog.Showl() == wxID_OK) 
{ 
//do something 
} 

當使用展(),對話框短暫地顯示了,然後消失。我認爲這可能是一個範圍問題,所以我使用了newAddDialog的指針。然後,出現對話框,當單擊確定或取消時,對話框關閉,但即使單擊確定,if語句代碼也不會執行。

有誰知道如何進行?謝謝。


進一步澄清:

我在我的對話框子類,我在另一個類此改變虛擬無效的功能。但是,如果我在實際的Dialog子類中有一個void時,我看不到該事件正在工作,但我得到該事件調用。這似乎是一個重大問題,但我不知道問題會是什麼。這不是我在OnInit()調用中調用的主要GUI - 這可能是一個問題嗎?

回答

0

ShowModal阻止程序的執行並返回結果(如wxID_OK)。另一方面,Show只是顯示對話框並立即返回,因此您無法從其返回值中檢查結果(用戶按下的按鈕)。相反,您必須通過從對話框發送事件或類似的東西來傳達該對話框的結果。

+0

我已通過添加一個事件wxID_OK按鈕來完成它。但是,事件函數不會被調用。 – intl

+0

在我的主帖中增加了進一步的說明。 – intl

0
AddDialog newAddDialog = new AddDialog(... 

這是否編譯?真?

'new'操作符返回一個指向void的指針,所以你發佈的代碼看起來確實很奇怪。

這樣做的通常的方法是:

AddDialog * newAddDialog = (AddDialog *) new AddDialog(... 

或者

AddDialog newAddDialog(...