MFC中DoDataExchange函数以及在对话框之间传递信息

在进行MFC编程的时候常常看到利用wizard生成的文件中含有DoDataExchange函数,但是从来没有关心过其作用或者原因。
同时,以前也想过两个对话框之间要怎么传递数据与信息,包括在培训的时候也讲述过这个应用的实现方法。

通过查询相关资料和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函数中,绑定控件和变量;

///注意此处在弹出的对话框类中进行绑定,
MFC,如果你想在对话框的CComboBox子控件捕捉用户的Enter键事件,可以像之前提到的那样,利用自定义的消息处理函数。通常的做法是在CComboBox派生类重写`OnKeyDown`或`OnKeyUp`事件,然后检查输入的字符是否为回车。 以下是步骤: 1. 在`.h`头文件声明消息处理函数: ```cpp afx_msg void OnEditKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); ``` 2. 在`.cpp`文件实现该函数: ```cpp void YourDialogClass::OnEditKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { if (nChar == VK_RETURN) { // 检查是否是回车键 // 在这里处理Enter事件,比如更新组合框选的项目 int index = m_CombineBox.GetCurSel(); if (index != CB_ERR) { // 执行你的业务逻辑,比如更新数据或显示提示信息 } // 这里可能需要防止默认的回车行为,例如关闭对话框 CDialog::EndModal(0); return; } // 如果不是回车键,将消息传递给基类处理 CDialog::OnEditKeyDown(nChar, nRepCnt, nFlags); } ``` 3. 在构造函数或初始化对话框资源时,连接这个事件: ```cpp CDialog* dialog = new YourDialogClass(this); // 使用对话框模板创建对话框实例 dialog->DoDataExchange(pDX); // 初始化对话框数据交换 dialog->OnInitDialog(); // 初始化对话框 // 绑定Enter事件到自定义函数 dlg.SetDlgItem(pDX, IDC_COMBOBOX_ID, &m_CombineBox); m_CombineBox.ConnectNotify(NM_KEYDOWN, &YourDialogClass::OnEditKeyDown); ``` 现在,当你在CComboBox按下Enter键时,`OnEditKeyDown`函数会被调用并执行相应的操作。记住,你需要替换`IDC_COMBOBOX_ID`为你实际的控件ID。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值