关于对话框程序中数据传递的问题
时间: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