A: 主对话框
B:主对话框上编辑框
C: 主对话框上按钮控件
D:由C弹出的模态对话框

怎样把在D中获得的数据(字符串),显示在B上。
为了给主框架减负,不要使用发送消息在主框架中实现的方法

解决方案 »

  1.   

    1.直接调用主对话框的成员setwindowtext   (例如:m_edit.SetwindowText(...))
    2.主对话框写个函数 void SetEdit(strd::string str);
      

  2.   

    怎样把在D中获得的数据(字符串),显示在B上。 
    为了给主框架减负,不要使用发送消息在主框架中实现的方法 
    ============
    给主对话框发自定义消息就加重了主框架负担了?主框架的负担还不是在于消息的处理,反正是显示在B上,用全局变量还不是一样。
      

  3.   

    那我也给个方法吧,我以前经常这么做
    第一步,修改一下D类的构造函数,加一个参数,用来传递父类。
    同时,给D类加一个指向父类的成员变量,用来保存传进来的父类的指针。
    比如D类为:CMyDialog的话,下面的它的构造函数和成员变量。
    public:
    CMyDialog(CfgfgDlg* pParent);   // 标准构造函数
    virtual ~CMyDialog();
    CfgfgDlg *m_pParent;
    注:CfgfgDlg就是D类的父类。
    下面是构造函数的实现:
    CMyDialog::CMyDialog(CfgfgDlg* pParent /*=NULL*/)
    : CDialog(CMyDialog::IDD, pParent)
    {
    m_pParent=pParent;

    }
    其实也就是将通过构造函数传进来的父类的指针,用m_pParent这个成员变量保存起来。
    再下面就是应用了,因为修改了构造函数,所以用时写成这样:
    CMyDialog dlg(this);//通过这一句,将this也就是父类的指针传进去了。
    dlg.DoModal();
    再下面,在D类,也就是我上面的CMyDiallg类中就可以用成员变量m_pParent来引用父类了。比如,父类窗口中有一个EDIT,ID为IDC_EDIT1,你想将它内容改为“1111”;那么可以写作m_pParent->SetDlgItemText(IDD_EDIT1,_T("1111"));
    这种方法是子对话框是模态对话框,在弹出时操作父对话框的一般方法。
      

  4.   

    不就是这个意思么
    CDDialog d;
    if(d.DoModal()==IDOK)
    {
         GetDlgItem(ID_B)->SetWindowText(d.m_str);
    }
      

  5.   

    建议楼主还是在主对话框处理吧...如果要时时更新可以用PostMessage
      

  6.   

    //|------------------------------|
    //|  A                           |
    //|                |---------|   |
    //|                |B(文本框) |   |
    //|                |---------|   |
    //|  |---------|                 |
    //|  | C (按钮) |                 |
    //|  |---------|                 |
    //|------------------------------|