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

解决方案 »

  1.   

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

  2.   

    DoModal之前控件都没创建,你设置值肯定会出问题.你给控件创建字符串型变量,给这个变量赋值.DoModal过程中 dlg2会自己把控件变量读到控件
      

  3.   

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

  4.   

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

  5.   


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

  6.   

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

  7.   


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

  8.   

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