zoukankan      html  css  js  c++  java
  • 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中显示
  • 相关阅读:
    数据库基础+重置root密码
    Bug定级
    测试用例和测试方法
    测试基础
    HDOJ-1010 Tempter of the Bone(dfs)
    POJ
    HDU-2089 不要62 (数位DP)
    Happy!
    LOJ-1422 万圣节服装
    数字三角形(数塔问题)
  • 原文地址:https://www.cnblogs.com/chenshaogang/p/4312759.html
Copyright © 2011-2022 走看看