现在的位置: 首页 > 综合 > 正文

主对话框与非模态对话框之间的通信

2013年03月06日 ⁄ 综合 ⁄ 共 754字 ⁄ 字号 评论关闭

主对话框类CLeditDlg,模态对话框CMoreDlg

主对话框中有一个combobox控件来显示地址,当按下一个按钮的时候打开模态对话框,模态对话框的编辑框中显示的是响应地址的天气,所以当主对话框中控件地址改变时需要改变模态对话框中的内容

首先,在CLeditDlg中定义一个CMoreDlg的指针pdlg,为public,并且CMoreDlg类中定义一个public的与编辑框关联的变量m_sum

然后,创建对话框

BOOL CLeditDlg::OnInitDialog()
{
 CDialog::OnInitDialog();

 

 pdlg1=new CMoreDlg;          
 pdlg1->Create(IDD_DIALOG1,AfxGetMainWnd());
 pdlg1->ShowWindow(SW_HIDE);

}

非模态对话框的显示

void CLeditDlg::OnButton1()
{
 // TODO: Add your control notification handler code here

 CString str=SixDay(str_city);
 pdlg1->m_sum=str;
 pdlg1->ShowWindow(SW_SHOW);
}

 非模态对话框内容的改变

void CLeditDlg::OnSelchangeCombo1()
{

 pdlg1->m_sum=SixDay(str_city);
 m_FaceEdit.SetText(sum);
}

 

这样可以同步改变非模态对话框中的内容,还有一个重要的地方是cleditdlg类中有一个public的变量,来起到中间的桥梁的作用,非模态对话框在主对话框中可以当做一个类,与其他的类是一样的,可以定义一个类的对象,可以改变这个对象的成员m_sum

 

抱歉!评论已关闭.