我想建立一个MFC应用程序,其中一个主要的对话,和所有其他对话框此主对话框的孩子(和嵌入它)。
现在,我能够嵌入的第一个孩子在主对话框中,但我想传递给下一个对话框(注意,打开的对话框中的顺序是随机的),所以我需要隐藏第一个对话框并显示另一个。 要知道哪个对话框此刻的显示和隐藏它,我一直在使用一个试图CDialog
变量来保存当前打开的对话框中,但我得到一个CObject::operator =' : cannot access private member declared in class 'CObject'
错误。
是否有另一种方式做到这一点“隐藏和显示对话框”的游戏?
编辑:我能保存对话框的一些ID,并用它来acomplish这个任务?
所以我设法使用类缺碘来完成这个任务。
首先,我保存最后打开的对话框的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
每个对话框的IDD相匹配,所以我可以将其隐藏。 在此之后,我再一次解析所有的CHID对话框,并使用nIDD
从发送的消息,以显示正确的。
我真的不喜欢这种方式,因为所有的解析和发送的邮件到主对话框的类,所以如果任何人有一个更好的主意或方法,请张贴。