2014-01-16 108 views
1

我想用一個主對話框構建一個MFC應用程序,並且所有其他對話框都是此主對話框的子對象(並嵌入其中)。MFC一個父對話框,多個子對話框

現在,我能夠在主對話框中嵌入第一個孩子,但我想傳遞到下一個對話框(請注意,打開的對話框的順序是隨機的),所以我需要隱藏第一個對話框並顯示另一個。要知道當前顯示哪個對話框並將其隱藏起來,我嘗試使用CDialog變量來存儲當前打開的對話框,但出現CObject::operator =' : cannot access private member declared in class 'CObject'錯誤。

有沒有另外一種方法來做到這一點「隱藏和顯示對話框」遊戲?

編輯:我可以存儲一些ID的對話框,並使用它來完成這個任務嗎?

+0

你有分類CDialog?聽起來好像你還沒有 –

+0

不,我沒有... – MRM

+0

你應該,然後在主對話框中添加一個矢量,例如, std :: vector >來跟蹤它們。每當你從一個對話框移動到另一個對話框時,通過向量並顯示/隱藏 –

回答

0

所以我設法完成這個任務使用類IDDs。

首先,我保存最後打開的對話框的IDD

m_dlgStartPage.Create(CStartPageDlg::IDD, this); 
m_openedWin.nDialogIDD = m_dlgStartPage.IDD; 
m_dlgStartPage.ShowWindow(SW_SHOW); 

然後,當一個新的對話框需要顯示,我發信息給我的主對話框(nIDD是未決的對話框,顯示IDD) :

AfxGetApp()->m_pMainWnd->SendMessage(WM_COMMAND_CHANGE_WINDOW, nIDD, 0);

而在去年,在我的主對話框中,我分析所有的子窗口,並檢查是否m_openedWin.nDialogIDD比賽,每個對話的國際直撥電話,所以我可以將其隱藏。在此之後,我再次解析所有chid對話框,並使用發送的消息中的nIDD顯示正確的一個。

我不太喜歡這種方法,因爲所有的解析和發送消息到主對話框的類,所以如果任何人有更好的想法或方法,請張貼它。