MFC中两个对话框之间数据传递

这里有两种情况,

第一种情况是:

(在一个基于单文档的应用程序中,新建了两个对话框A和B,并且用两个独立的类和他们关联)

对话框A中有一个编辑框, 按下A中的一个按钮a后弹出对话框B,
B中也有一个编辑框b,
 在B中输入数据 点击确定(ID0K)后 ,b中的数据能传到a,并且能显示出来
具体实现方法:
在A对话框的Button1按钮响应函数中,添加以下代码:
void DlgA::OnButton1() 
{
	// TODO: Add your control notification handler code here
	DlgB dlgB;    // 新建B对话框的对象
	if (IDOK==dlgB.DoModal())
	{
		m_strA=dlgB.m_strB;   // m_strA是a编辑框关联的变量,m_strB是b对话框关联的变量
	}
	UpdateData(FALSE); 
}
在B对话框的“确定”ID号为(IDOK),函数中添加以下代码:
void DlgB::OnOK() 
{
	// TODO: Add extra validation here
	GetDlgItem(IDC_EDIT1)->GetWindowText(m_strB); // 获取b对话框的值,保存在m_strB中

);
	CDialog::OnOK();
}
第二种情况是:
(在一个基于单文档的应用程序中,新建了两个对话框A和B,并且用两个独立的类和他们关联)
在A对话框的a编辑框中输入数据,点击确定(IDOK)按钮,A对话框消失
打开B对话框,其中的b编辑框中能显示原来a中的数据
实现方法如下:
1.在程序的App类中,添加一个成员变量,它相当于整个程序的全局变量,所有的类都能用
float myFlow;
2.在A对话框的“确定”按钮中,输入一下代码:
void CInitial::OnOK() 
{
	// TODO: Add extra validation here
		UpdateData(true);
		CEnvirMonibeta1App *pApp=(CEnvirMonibeta1App *)AfxGetApp( );
		pApp->myFlow=m_Iflow;   // m_Iflow  是a编辑框关联的变量

	CDialog::OnOK();
}
3.在B对话框的OnPaint函数(这个函数需要自己添加WM_PAINT)中,添加如下代码:
	CEnvirMonibeta1App *pApp=(CEnvirMonibeta1App *)AfxGetApp( );
	m_flow=pApp->myFlow;
	UpdateData(FALSE);

这个就能实现目标了~~

如果是父对话框和子对话框的传递,用下面的方法:

CParentDlg *parent=(CParentDlg*)GetParent();
parent->GetDlgItem()->SetWindowText()
追问
能稍稍解释下么。。。光两条语句看不懂啊、、
回答
CParetDlg对应你的A对话框类。
通过一个parent指针指向父对话框,然后就是获得B的内容,在A中显示

  • 15
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值