MFC中DoDataExchange函数以及在对话框之间传递信息
2018-01-02 21:30
411 查看
在进行MFC编程的时候常常看到利用wizard生成的文件中含有DoDataExchange函数,但是从来没有关心过其作用或者原因。
同时,以前也想过两个对话框之间要怎么传递数据与信息,包括在培训的时候也讲述过这个应用的实现方法。
通过查询相关资料和MSDN上面的说明,可以知道,通过在DoDataExchange函数中,绑定变量和空间,能够实现控件内容和变量之间的数据传递。
首先,在弹出的对话框类(CPopDlg)中创建变量;
其次,在该类的DoDataExchange函数中,绑定控件和变量;
然后可以编写对应的set方法和get方法。在主对话框中需要弹出对话框的地方设置变量的值;
上面讲到模态对话框和非模态对话框都可以,但是模态对话框不需要updateData函数,原因暂时未知,可能实在domodal函数中具有此函数。而非模态则比较简单,但是一定要在create函数之后再调用。
调用CPopDlg对象的updateData(FALSE)函数,然后就会发现内容被传递到控件上面了;
如果在子对话框CPopDlg中更改了空间上面的内容,还想要把结果传递回来,只需要在离开CPopDlg的时候调用updateData(TRUE)就可以由控件传递到变量上面。
同时,以前也想过两个对话框之间要怎么传递数据与信息,包括在培训的时候也讲述过这个应用的实现方法。
通过查询相关资料和MSDN上面的说明,可以知道,通过在DoDataExchange函数中,绑定变量和空间,能够实现控件内容和变量之间的数据传递。
首先,在弹出的对话框类(CPopDlg)中创建变量;
private: CString m_usname; CString m_pswd; public: void setUSNM(CString usnm); void setPSWD(CString pswd); CString getUSNM(void); CString getPSWD(void);
其次,在该类的DoDataExchange函数中,绑定控件和变量;
///注意此处在弹出的对话框类中进行绑定,其实也可以在主窗口中绑定,但是可能无法在子窗口中控制 void CLoginDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); //// 可以认为这是一个绑定的过程 DDX_Text(pDX, IDC_EDIT_USNM, m_usname); DDX_Text(pDX, IDC_EDIT_PSWD, m_pswd); }
然后可以编写对应的set方法和get方法。在主对话框中需要弹出对话框的地方设置变量的值;
////模态对话框和非模态对话框的都可以 void CtestDoDataExchangeDlg::OnBnClickedPop() { pcld = new CLoginDlg(); pcld->setUSNM("admin"); pcld->setPSWD("password"); //pcld->Create(IDD_DlgLogin, this);////该函数必须在UpdateData之前调用? //pcld->UpdateData(FALSE); //pcld->ShowWindow(SW_SHOWNORMAL); ///////// 这个地方,在使用domodal的时候,还是比较需要注意的 ///////// 因为,貌似不能在这里使用updatedata。可能是因为domodal中 ///////// 集成了updatedata的相关操作吧 //pcld->UpdateData(FALSE); pcld->DoModal(); // TODO: Add your control notification handler code here }
上面讲到模态对话框和非模态对话框都可以,但是模态对话框不需要updateData函数,原因暂时未知,可能实在domodal函数中具有此函数。而非模态则比较简单,但是一定要在create函数之后再调用。
调用CPopDlg对象的updateData(FALSE)函数,然后就会发现内容被传递到控件上面了;
如果在子对话框CPopDlg中更改了空间上面的内容,还想要把结果传递回来,只需要在离开CPopDlg的时候调用updateData(TRUE)就可以由控件传递到变量上面。
void CLoginDlg::OnBnClickedOk() { UpdateData(TRUE); // TODO: Add your control notification handler code here CDialogEx::OnOK(); }
相关文章推荐
- [MFC]DoDataExchange的对话框数据交换和检验
- mfc DoDataExchange函数的作用
- MFC不同对话框之间的数据传递
- iframe 之间以及与父窗体的函数调用、值传递
- 对对话框之间的信息传递
- MFC中两个对话框之间数据传递
- 【转】MFC 数据绑定 DoDataExchange( )
- 基于对话框的MFC窗口之间值的传递
- 如何在MFC对话框之间自定义消息传递
- MFC对话框之间传递数据
- DoDataExchange函数和UpdataData函数
- MFC DoDataExchange()绑定技术
- MFC中DoDataExchange()的作用
- DoDataExchange函数详解
- MFC学习之对话框---对话框之间的domodle 数据传递
- MFC_为MFC对话框建立初始化函数BOOL HistoryData::OnInitDialog()
- MFC对话框之间自定义消息传递
- DoDataExchange 函数简单说明
- MFC中的DoDataExchange(CDataExchange *pDX)
- VS2010 MFC中在对话框上添加工具栏以及工具栏提示信息并改变图标支持256色