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

http://blog.csdn.net/foreverhuylee/article/details/21707197

这里有两种情况,

第一种情况是:

(在一个基于单文档的应用程序中,新建了两个对话框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中显示
时间: 2024-08-24 04:17:22

MFC中两个对话框之间数据传递的相关文章

MVC中Control和View之间数据传递的方式

1:ViewBag和ViewData 具体区别不做讨论,本处只演示ViewData的具体示例: Controler代码:ViewData["Employee"] = emp; View代码: @{ WebApplication1.Models.Employee emp=(WebApplication1.Models.Employee) ViewData["Employee"]; } <b>Employee Details </b><br

再谈MFC学习——模态对话框的数据传递

学习c++的目的就是为了使用封装好的类,而最最经典的封装类当然是微软的MFC窗口程序类.学习MFC编程之前要学习c++的主要知识,掌握c++的基本编程思想.下面就看下我学习的MFC模态对话框的数据传递. 首先,什么叫做模态对话框呢?模态对话框指的是当弹出这样的对话框的时候,程序不能相应除了此对话框外其他的窗口的响应,直到关闭了这个对话框,程序才能响应其他的对话框的响应.非模态对话框即使弹出也能响应程序其他的窗口而不需要等到此窗口的关闭.那么MFC中怎么才能弹出模态对话框呢?其实很简单,首先创建这

数据库中两张表之间的数据同步实现思路(增加、删除、更新)Mysql、sqlserver

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加:如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END 2.数据同步删除:如有

解析activity之间数据传递方法的详解

转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下 1  基于消息的通信机制 Intent--------boudle,extra用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等详细介绍下Intent机制Intent包含两部分:1 目的[action]-------要去到哪里去2 内容[category.data]----------路上带些什么,

在db2中 两个数据库之间的两个表的联合查询

大家好,今天遇到了在db2中 两个数据库之间的两个表的联合查询我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理我找了类似于比如两个数据库: db1,db2用户名密码select * from db1.用户名.密码,db2.用户名.密码 where db1.NM=db2.NM可是这样不好用啊请各位帮忙谢谢 DB2有联邦数据库的,你可以查一下. 1.要看目录数据库请用:db2 list db directory这些信息应该是放系统表中.(既不是什么注册表.也不是什么文

两个activity之间怎么传递ArrayList&lt;HashMap&lt;String, Object&gt;&gt;

问题:两个activity之间怎么传递ArrayList<HashMap<String, Object>>,比如在跳转后的页面要得到构造器数据,可是在跳转后页面构造数据的话可能就会效率太慢导致页面跳转的时候出现黑屏现象,这样的话我们就会想在跳转前页面先得到数据,然后将ArrayList<HashMap<String, Object>>类型的数据传到另一个activity在构造适配器这样就不会出现因初始化页面时间太久而出现的黑屏现象了.但是问题出现了,怎么传递

Android activity之间数据传递和共享的方式之Application

1.基于消息的通信机制  Intent ---bundle ,extra 数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream,或者LinkedList链表等等数据类型就不太好用. 2.利用static静态数据, public static成员变量: 3.基于外部存储的传输,File/Preference/Sqlite 如果要针对第三方应用需要Content Provider 4.基于IPC的通信机制 context 与Service之间的传输,如Activity与Serv

无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

两个GridView之间数据转移,交互,实现拖拽,网易新闻列表效果实现

两个GridView之间数据转移,交互,实现拖拽,网易新闻列表效果实现 摘要 :android 高仿频道管理网易新闻. 新闻频道增删,排序,以及一些动画的实现 可拖动的GridView 地址  :  http://www.itnose.net/detail/6035345.html