问题:
1.在子对话框中它的子对话框需要实现脱离父对话框的束缚.(因为A对话框需要B对话框搜索的结果.)
2.非模态对话框需要获得主对话框的句柄来调用主对话框类的方法.(因为B对话框需要主对话框的方法来实现底层通信.)
解决办法:
1.创建线程,在线程中创建对话框,使得多个窗口可以同时工作.
利用MFC中的UI线程实现:
a.CSearch为B对话框
b.创建CMyThread继承于CWinThread,修改其方法:
类中定义CSearch *m_dlg;(定义为指针因为后续要用.)
CMyThread::InitInstance():
m_dlg=new CSearch(m_mainDlg);
m_dlg->Create(IDD_Search,NULL);
m_dlg->ShowWindow(SW_SHOW);
CMyThread::ExitInstance():
m_dlg->DestroyWindow();
(头文件等不细说!)
c.在A对话框的cpp中,
if(hasSearch){//用来限制只能打开一次
return;
}else{
hasSearch=true;
CWinThread * pThread = AfxBeginThread (RUNTIME_CLASS (CMyThread));
//现在可以不看此3行
//CWinThread * pThread = AfxBeginThread (RUNTIME_CLASS (CMyThread),0,0,CREATE_SUSPENDED,NULL);
//((CMyThread*)pThread)->m_mainDlg=CClientInterfaceDlg::GetDialog();
/