关于对话框程序中数据传递的问题
时间:2011-12-07
来源:互联网
             本人通过VC++创建了一个对话框程序,其中包括CMemberDlg、CAxialDlg、CBendDlg、CParameterDlg四个对话框,其基类均为CDialog。其中CMemberDlg为主对话框,本人通过在CMemberDlg中添加Ctab控件调用其他三个对话框,代码如下:
CMemberDlg头文件的部分内容:
#include "AxialDlg.h"
#include "BendDlg.h"
#include "ParameterDlg.h"
class CMemberDlg : public CDialog
{
public:
CMemberDlg(CWnd* pParent = NULL);
CAxialDlg * m_pAxialDlg;
CBendDlg * m_pBendDlg;
CParameterDlg * m_pParameterDlg;
};
CMemberDlg初始化函数的部分内容:
BOOL CMemberDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_pAxialDlg=new CAxialDlg();
m_pAxialDlg->Create(IDD_AXIAL_DIALOG,NULL);
m_pBendDlg=new CBendDlg();
m_pBendDlg->Create(IDD_BEND_DIALOG,NULL);
m_pParameterDlg=new CParameterDlg();
m_pParameterDlg->Create(IDD_PARA_DIALOG,NULL);
m_tab.GetClientRect(rect);
rect.InflateRect(-0,-20,-0,-0);
m_pAxialDlg->MoveWindow(rect);
m_pAxialDlg->ShowWindow(SW_SHOW);
m_pAxialDlg->m_pParameterDlg=m_pParameterDlg;
m_pBendDlg->m_pParameterDlg=m_pParameterDlg;
return TRUE;
}
为了使CAxialDlg和CBendDlg对话框可以访问CParameterDlg对话框的控件,我通过在CAxialDlg和CBendDlg对话框中创建CParameterDlg对话框的指针变量m_pParameterDlg来得到CParameterDlg对话框的指针。我同时需要在CParameterDlg对话框中访问CAxialDlg和CBendDlg对话框的控件,但是通过创建CAxialDlg和CBendDlg对话框的指针变量的方式程序总是报错,不知道是什么原因,如果想完成几个对话框之间的数据传递不知用哪种方法最为合理,谢谢指教,感激不尽!
            CMemberDlg头文件的部分内容:
#include "AxialDlg.h"
#include "BendDlg.h"
#include "ParameterDlg.h"
class CMemberDlg : public CDialog
{
public:
CMemberDlg(CWnd* pParent = NULL);
CAxialDlg * m_pAxialDlg;
CBendDlg * m_pBendDlg;
CParameterDlg * m_pParameterDlg;
};
CMemberDlg初始化函数的部分内容:
BOOL CMemberDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_pAxialDlg=new CAxialDlg();
m_pAxialDlg->Create(IDD_AXIAL_DIALOG,NULL);
m_pBendDlg=new CBendDlg();
m_pBendDlg->Create(IDD_BEND_DIALOG,NULL);
m_pParameterDlg=new CParameterDlg();
m_pParameterDlg->Create(IDD_PARA_DIALOG,NULL);
m_tab.GetClientRect(rect);
rect.InflateRect(-0,-20,-0,-0);
m_pAxialDlg->MoveWindow(rect);
m_pAxialDlg->ShowWindow(SW_SHOW);
m_pAxialDlg->m_pParameterDlg=m_pParameterDlg;
m_pBendDlg->m_pParameterDlg=m_pParameterDlg;
return TRUE;
}
为了使CAxialDlg和CBendDlg对话框可以访问CParameterDlg对话框的控件,我通过在CAxialDlg和CBendDlg对话框中创建CParameterDlg对话框的指针变量m_pParameterDlg来得到CParameterDlg对话框的指针。我同时需要在CParameterDlg对话框中访问CAxialDlg和CBendDlg对话框的控件,但是通过创建CAxialDlg和CBendDlg对话框的指针变量的方式程序总是报错,不知道是什么原因,如果想完成几个对话框之间的数据传递不知用哪种方法最为合理,谢谢指教,感激不尽!
作者: liuzhifeng168 发布时间: 2011-12-07
             没有人帮忙吗,自己顶一个先!            
            作者: liuzhifeng168 发布时间: 2011-12-07
             一般就用全局变量试一试,就是将对话框的控件中的数据赋给一个全局变量然后进行处理。            
            作者: hai296 发布时间: 2011-12-07
             CAxialDlg、CBendDlg、CParameterDlg三个对话框是在CMemberDlg通过堆的方式创建的,不知道CAxialDlg、CBendDlg、CParameterDlg三个对话框是不是CMemberDlg的子对话框。            
            作者: liuzhifeng168 发布时间: 2011-12-07
             在主主对话框中 用那三个对话框类去创建对象,通过对象使用这个三个对话框中的变量值;
如,在CMemberDlg中,
CAxialDlg dlg;
dlg.caxialdlg //caxialdlg是CAxialDlg类中的变量值;
            如,在CMemberDlg中,
CAxialDlg dlg;
dlg.caxialdlg //caxialdlg是CAxialDlg类中的变量值;
作者: hnyztzh 发布时间: 2011-12-07
             哦,忘记说了,你需要用 dlg.DoModal();来交互对话框中的值。            
            作者: hnyztzh 发布时间: 2011-12-07
 相关阅读 更多  
      
    热门阅读
-  
 office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
          阅读:74
 -  
 如何安装mysql8.0
          阅读:31
 -  
 Word快速设置标题样式步骤详解
          阅读:28
 -  
 20+道必知必会的Vue面试题(附答案解析)
          阅读:37
 -  
 HTML如何制作表单
          阅读:22
 -  
 百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
          阅读:31
 -  
 ET文件格式和XLS格式文件之间如何转化?
          阅读:24
 -  
 react和vue的区别及优缺点是什么
          阅读:121
 -  
 支付宝人脸识别如何关闭?
          阅读:21
 -  
 腾讯微云怎么修改照片或视频备份路径?
          阅读:28
 















