MFC 两个窗口 传递值

来源:互联网 发布:sap hana数据库 编辑:程序博客网 时间:2024/05/17 03:46

         如题,简单来说, 就是在  B中定义一个方法 Func, 用来获取B中输入的结果, 同时,在A 中,调用  B 的Func , 就OK。

 核心代码如下:

SafeDataDlg dlg;if (dlg.DoModal() == IDOK){// ----------关键代码mDemo = dlg.GetDemo();EDIT_TEXT.SetWindowText(mDemo.name);}

--------------------------------------------------------------------------------------------------------------------------


1、问题描述

        窗口A要使用窗口B输入的值。  

       窗口B:



 窗口A:


      A中的123 不是 默认设置的。

       这里,A中显示B中传过来的 值。



2、解决方案之一

       建好一个MFC 窗口应用程序,基于对话框的。

     A、新建一个结构体,我用来保存输入的数据:

struct demo{CString name;};
    B、在资源管理器中,打开资源文件.rc,找到 Dialog, 新建一个 dialog。 并添加好如下的控件 (Edit control      +     button):



    C、双击刚刚新建的这个Dialog, 添加对应的类名:




     D、对步骤 B 中的控件 设置好属性: ID, 和 控件变量。



        E、 在刚刚新建的dialog 添加的类中 添加 结构体  属性:

             包含   结构所在文件:

#include "typedef.h"
              比如,我  在步骤 C中添加的类是    dialog1, 就找到这个类。 添加下面的属性:

private:demo mDemo;
              同时,在这个类中,我还添加了个方法。 用来获取属性值:

demo GetDemo();
              我对这个函数是这样实现的:

return mDemo;
         对, 就这一句。


          F、回到刚刚新建的 dialog 中, 咱们不是新建了一个 按钮嘛。 双击它, 添加 在其事件中添加如下代码:

CString tmp; EDIT_TEXT.GetWindowText(tmp);if (tmp.GetLength()> 0){mDemo.name = tmp;}CDialogEx::OnOK();

           

           G、回到主对话框所在的资源文件  , 就是工程创建时对应的那个默认对话框, 找到其资源文件,添加如下控件, 添加好控件变量:



          H、找到 主对话框 对应的  .cpp  ,在文件顶部 包含  窗口 B所在头文件:

#include "Dialog1.h"
         I、同样的,找到 主对话框所在的 .cpp , 找到函数   OnInitDialog ()  :添加如下   自定义代码

  

CDialogEx::OnInitDialog();// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);// 设置大图标SetIcon(m_hIcon, FALSE);// 设置小图标// TODO: 在此添加额外的初始化代码//---------------- 自定义代码---------------------SafeDataDlg dlg;if (dlg.DoModal() == IDOK){mDemo = dlg.GetDemo();EDIT_TEXT.SetWindowText(mDemo.name);}
         


3、 结果:

   




1 1
原创粉丝点击