对话框通过EndDialog返回值传值回父窗体


1. 调用对话(模式调用)

MyDialog dlg(this);

INT_PTR nRet=dlg.DoModal();  //这里接收模态对话框传出来的指针

if(nRet==IDCANCEL)      //如果是点的IDCANCEL按钮或是关闭按钮就返回

  return;

STUDENT *pStu=(STUDENT*)nRet;

//pStu指针就是从对话框中传过来的数据

// 用完后记得删除pStu指向的内存

Delete pStu;

2.对话框的IDOK按钮消息

void OnOK()

  STUDENT* pStu=new STUDENT;  //创建新的结构体,一定要New,不然传递过去是乱码

  //把控件中的数据赋值给结构体指针变量

  GetDlgItemText(IDC_NAME_EDIT,pStu->name);

  GetDlgItemText(IDC_SEX_COMBO,pStu->sex);

  pStu->age=GetDlgItemText(IDC_AGE_EDIT);

  GetDlgItemText(IDC_TEL_EDIT,pStu->tel);

  ::EndDialog(m_hWnd,(INT_PTR)pStu); //传数据到模态返回值中

void OnCancel()

  ::EndDialog(m_hWnd,IDCANCEL);

void OnClose()

  OnCancel();