MFC下同一个工程中怎么实现对话框和对话框2上的控件通信啊

时间:2021-05-21 12:18:07
MFC下同一个工程中怎么实现对话框和对话框2上的控件通信啊
我搞了很久也搞不定,老是程序挂着,我在想我调用的方法好像都是符合逻辑啊。怎么好掉呢。
void CMFCDlg::OnButton1() 
{

//Dlg2.m_Edit2.SetWindowText("从对话框1设置对话框2的数据X");

 //Dlg2->m_Edit2.SetWindowText("从对话框1设置对话框2的数据X");
  
//GetDlgItem(IDC_EDIT2)->SetWindowText("sssssssss");
         //Dlg2=new CClass;
//Dlg2->GetDlgItem(IDC_EDIT2)->SetWindowText("xxxxxxx");
//Dlg2->m_Edit2.SetWindowText("xxxxxxxxxxx");
//CWnd *P=GetDlgItem(IDD_DIALOG1);
//P->GetDlgItem(IDC_EDIT2)->SetWindowText("XXXXXXXXX");
Dlg2->DoModal();

}
===============================================这是我的定义的对象  两种方法定义都试过了。。
class CMFCDlg : public CDialog
{
// Construction
public:
   CClass *Dlg2;           //CClass 是新建对话框2  他从CDialog继承来的
   // CClass Dlg2;

 
 只有最后一行代码可运行。。用来显示对话框2出来的、、
 以上是我用的方法来和新建对话框2上的编辑框控件进行通信  都运行不了 直接程序崩溃。。求原因!!
 谢谢啊,,那位可以解释下为什么程序会崩溃啊。。我用的是VC6.0

11 个解决方案

#1


指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框  
先new
再create
再show

#2


引用 1 楼 zgszft 的回复:
指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框  
先new
再create
再show


对话框2是我创建好的了,,我想在对话框1中的按钮 来设置对话框2 上的编辑框控件  应该怎么做?

#3


DoModal之前控件都没创建,你设置值肯定会出问题.

你给控件创建字符串型变量,给这个变量赋值.

DoModal过程中 dlg2会自己把控件变量读到控件

#4


CClass *Dlg2;
Dlg2->DoModal();
没出错?

#5


引用 2 楼 cjiajia1 的回复:
引用 1 楼 zgszft 的回复:

指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框
先new
再create
再show


对话框2是我创建好的了,,我想在对话框1中的按钮 来设置对话框2 上的编辑框控件  应该怎么做?

对象的话就用“.”,且在domodal前修改
指针的话就用->,在showwindow前修改

#6


引用 4 楼 shn521 的回复:
CClass *Dlg2;
Dlg2->DoModal();
没出错?


 嗯 是啊,,我也觉得奇怪了,我只定义了这样一个指针,,还没有在堆中创建该对象怎么会可以调用呢 而且也没有错误,,  new CClass  怎么回事啊。。不理解,因为在C++里面不可以这么调用的。。

#7


引用 5 楼 zgszft 的回复:
引用 2 楼 cjiajia1 的回复:

引用 1 楼 zgszft 的回复:

指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框
先new
再create
再show


对话框2是我创建好的了,,我想在对话框1中的按钮 来设置对话框2 上的编辑框控件  应该怎么做?

对象的话就用“.”,且在do……



 也不可以,,调用就挂了。

#8


CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();

#9


引用 8 楼 shn521 的回复:
CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();


 这个没有问题,,不是这个问题 是怎么从对话框1中 设置对话框2上的编辑框数据啊。。

#10


引用 9 楼 cjiajia1 的回复:
引用 8 楼 shn521 的回复:

CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();


 这个没有问题,,不是这个问题 是怎么从对话框1中 设置对话框2上的编辑框数据啊。。


不就是
CClass Dlg2;
Dlg2.SetDlgItemText(IDC_EDIT2,_T("xxxxxxx"));
Dlg2.DoModal();

#11


引用 10 楼 zgszft 的回复:
引用 9 楼 cjiajia1 的回复:

引用 8 楼 shn521 的回复:

CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();


这个没有问题,,不是这个问题 是怎么从对话框1中 设置对话框2上的编辑框数据啊。。


不就是
CClass Dlg2;
Dlg2.SetDlgItem……



你这个不行 运行就挂,,我终于明白你说的了
指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框
先new
再create
再show
今天看了孙鑫的书 才知道

#1


指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框  
先new
再create
再show

#2


引用 1 楼 zgszft 的回复:
指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框  
先new
再create
再show


对话框2是我创建好的了,,我想在对话框1中的按钮 来设置对话框2 上的编辑框控件  应该怎么做?

#3


DoModal之前控件都没创建,你设置值肯定会出问题.

你给控件创建字符串型变量,给这个变量赋值.

DoModal过程中 dlg2会自己把控件变量读到控件

#4


CClass *Dlg2;
Dlg2->DoModal();
没出错?

#5


引用 2 楼 cjiajia1 的回复:
引用 1 楼 zgszft 的回复:

指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框
先new
再create
再show


对话框2是我创建好的了,,我想在对话框1中的按钮 来设置对话框2 上的编辑框控件  应该怎么做?

对象的话就用“.”,且在domodal前修改
指针的话就用->,在showwindow前修改

#6


引用 4 楼 shn521 的回复:
CClass *Dlg2;
Dlg2->DoModal();
没出错?


 嗯 是啊,,我也觉得奇怪了,我只定义了这样一个指针,,还没有在堆中创建该对象怎么会可以调用呢 而且也没有错误,,  new CClass  怎么回事啊。。不理解,因为在C++里面不可以这么调用的。。

#7


引用 5 楼 zgszft 的回复:
引用 2 楼 cjiajia1 的回复:

引用 1 楼 zgszft 的回复:

指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框
先new
再create
再show


对话框2是我创建好的了,,我想在对话框1中的按钮 来设置对话框2 上的编辑框控件  应该怎么做?

对象的话就用“.”,且在do……



 也不可以,,调用就挂了。

#8


CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();

#9


引用 8 楼 shn521 的回复:
CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();


 这个没有问题,,不是这个问题 是怎么从对话框1中 设置对话框2上的编辑框数据啊。。

#10


引用 9 楼 cjiajia1 的回复:
引用 8 楼 shn521 的回复:

CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();


 这个没有问题,,不是这个问题 是怎么从对话框1中 设置对话框2上的编辑框数据啊。。


不就是
CClass Dlg2;
Dlg2.SetDlgItemText(IDC_EDIT2,_T("xxxxxxx"));
Dlg2.DoModal();

#11


引用 10 楼 zgszft 的回复:
引用 9 楼 cjiajia1 的回复:

引用 8 楼 shn521 的回复:

CClass *Dlg2;
Dlg2->DoModal();
改为
CClass Dlg2;
Dlg2.DoModal();


这个没有问题,,不是这个问题 是怎么从对话框1中 设置对话框2上的编辑框数据啊。。


不就是
CClass Dlg2;
Dlg2.SetDlgItem……



你这个不行 运行就挂,,我终于明白你说的了
指针时木有create
且一般情况下
对于建立模态对话框使用 对象实例.domodal()
对于建立非模态对话框
先new
再create
再show
今天看了孙鑫的书 才知道