基于对话框的MFC窗口之间值的传递

编码时碰到一个MFC多个对话框窗口之间值的传递的问题,花了些时间总结一下。问题具体是这样的:

单击CWorkerBorrow对话框类中的“添加借调“功能按钮,弹出CMBorrow对话框来编辑信息,然后鼠标点击CEdit类型的编辑框区域,在CMBorrow对话框上弹出CSelectWorker对话框,通过查询后选中CSelectWorker中列表控件中的某项,然后单击确定按钮将选中的值传给CMBorrow对话框中的编辑框。

简而言之:

在A中点击按钮弹出B,在B中点击CEdit编辑框弹出C,在C中选某(些)值,将值传给B的某(些)编辑框;


解决步骤:

1、响应“添加借调”按钮,弹出CMBorrow对话框


2、在CMBorrow对话框中响应PreTranslateMessage消息,实现点击CEdit编辑框弹出CSelectWorker对话框

BOOL CMBorrow::PreTranslateMessage(MSG* pMsg)
{
// TODO:  在此添加专用代码和/或调用基类

if (pMsg->message == WM_LBUTTONDOWN)
{
CRect rc;
GetDlgItem(IDC_MWID)->GetWindowRect(&rc);// 获取编辑框矩形区域

if (rc.PtInRect(pMsg->pt)) // 如果鼠标坐标在编辑框区域中则弹出
{
CSelectWorker dlg;
dlg.DoModal(); // 弹出CSelectWorker对话框


m_mwid = dlg.m_wid; // m_mwid、m_odid、m_oPosition为CEdit的值变量
m_odid = dlg.m_dp2; // m_wid、m_dp2、m_position为CSelectWorker的成员变量
m_oPosition = dlg.m_position;

m_cwid.SetWindowTextW(m_mwid); // m_cwid、m_codid、 m_cposition为CEdit的控制变量
m_codid.SetWindowTextW(m_odid);
m_cposition.SetWindowTextW(m_oPosition);

return TRUE;
}
}

return CDialogEx::PreTranslateMessage(pMsg);
}


3、处理CSelectWorker对话框中确定按钮点击事件

void CSelectWorker::OnBnClickedOk()
{
// TODO:  在此添加控件通知处理程序代码

m_wid = m_list.GetItemText(m_listIndex, 0); // 将选中的值赋值给成员变量,m_list为CListCtrl的控制变量
m_dp2 = m_list.GetItemText(m_listIndex, 3); // m_listIndex为列表控件的列号
m_position = m_list.GetItemText(m_listIndex, 4);

CDialogEx::OnOK();
}


这样便成功地将值传给了CMBorrow对话框中的编辑框,关键在CMBorrow中响应PreTranslateMessage消息,通过点击编辑框弹出对话框(CSelectWorker),然后将值赋值给CSelectWorker的成员变量,关闭CSelectWorker对话框后再给CMBorrow编辑框的值赋值,最后用编辑框的控制变量设置编辑框中的值。



附图:


点击“添加借调”弹出CMBorrow对话框



点击“员工编号”编辑框,弹出CSelectWorker对话框,选择list列表中的某行并获取值,然后将值赋值给CSelectWorker的成员变量 m_wid,m_dp2,m_position,然后点击确定按钮



最后值成功传到CMBorrow对话框中


  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值