非模态(模态)对话框如何向父窗口写入数据

第一步:在主窗口中拉一人listbox控件;

第二步:拉一个按钮,为这个按钮编程如下,功能是启动一个非模态对话框

void CMy1Dlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 CMydialog *dlg=new CMydialog;
 dlg->Create(IDD_DIALOG1,this);
 dlg->ShowWindow(SW_SHOW);
}

第三步:在非模态对话框中得到父窗口的指针,通过指针向父窗口添加数据

void CMydialog::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 UpdateData(TRUE); 
 CMy1Dlg *p=(CMy1Dlg *)GetParent();
 p->m_listbox.AddString(m_edit2);
}

 

小结:GetParent()是得到父窗口的指针,对模态、非模态都有用。

 

非模态对话框退出时一般要用如下2个函数进行退出

void CMydialog::OnBnClickedButton2()
{
 // TODO: 在此添加控件通知处理程序代码
 DestroyWindow();
}

void CMydialog::PostNcDestroy()
{
 // TODO: 在此添加专用代码和/或调用基类

 CDialog::PostNcDestroy();
 delete this;
}

 

你可能感兴趣的:(非模态(模态)对话框如何向父窗口写入数据)