+ -
当前位置:首页 → 问答吧 → 关于对话框程序中数据传递的问题

关于对话框程序中数据传递的问题

时间: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对话框的指针变量的方式程序总是报错,不知道是什么原因,如果想完成几个对话框之间的数据传递不知用哪种方法最为合理,谢谢指教,感激不尽!

作者: 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类中的变量值;

作者: hnyztzh   发布时间: 2011-12-07

哦,忘记说了,你需要用 dlg.DoModal();来交互对话框中的值。

作者: hnyztzh   发布时间: 2011-12-07