对话框的数据交换
无模式对话框可以通过写静态get函数,得到返回值的方法,也可设置静态变量的方法。
如 声明在CMyDlg中 static int getX();
函数:
1 int getX() 2 { 3 return X; 4 }
则在需要的窗口调用该函数即可
如 CMyDlg::getX();
模式对话框的数据传输如下,以编辑控件 EDIT为例
主窗口
1 CMyDialog dlg; 2 dlg.m_strEdit = _T("在此输入"); //初始化该编辑框的值 3 if (dlg.DoModal()==IDOK){ 4 CString str = dlg.m_strEdit; //返回后将输入值给 str 5 }
新建窗口中可以通过
SetDlgItemText(IDC_Edit,m_strEdit); //将m_strEdit的值给控件 GetDlgItemText(IDC_Edit,m_strEdit); //将控件的输入值给m_strEdit
得到控件的值;也可以通过DDX函数将控件和变量联系起来
void CNewDlg::DoDataExchange(CDataExchange *pDX) { DDX_Text(pDX,IDC_Edit,m_StrEdit); }
如下是DDX函数:
下面是DDV函数
1 void CNewDlg::DoDataExchange(CDataExchange *pDX) 2 { 3 DDX_Text(pDX,IDC_Edit,m_IntEdit); 4 DDV_MinMaxInt(pDX,m_IntEdit,0,100); //编辑的最大值最小值,超过该值 则显示一个错误提示信息 5 }