通过将对象作为Reference传递,无法在对话框之间进行通信!

时间:2010-03-04 09:11:15

标签: mfc dialog communication

我想在两个或多个对话框窗口之间进行通信,当我说通信时这意味着我想在所有对话框中使用变量和函数,并更新值。 所以我所做的是创建三个主对话框,考虑1个对话框窗口作为主窗口,它可以有变量和函数,我为其他窗口中的maindialog创建了一个指针变量..来访问主窗口中的变量和函数...如果不清楚,请检查以下代码......

first dialog class
//header
class MainDialog;
class FirstDialog : public CDialog
{
    DECLARE_DYNAMIC(FirstDialog)
public:
    FirstDialog();//standard constr
    FirstDialog(MainDialog* pfirstPage);//constructor that i defined

protected:
    MainDialog* firstPage;
};
//cpp
intializing the constructor

FirstDialog::FirstDialog(MainDialog* pFirstPage)
    : CDialog(FirstDialog::IDD)
    ,firstPage(pFirstPage)
{

}

similarily  SecondDialog Class....
now i did the following

MainDialog main(L"Main Dialog");
    FirstDialog dialog1(&main);
    SecondPage   dialog2(&main);
    m_pMainWnd = &dialog1;
    INT_PTR nResponse = dialog1.DoModal();

所以问题是,如果我在maindialog中有一个CString变量..我可以调用该变量并在第一个Dialog中分配值...但是当我试图在secondDialog中限制时访问该值。 。没有价值。如果你无法理解,请告诉我。

1 个答案:

答案 0 :(得分:1)

一个潜在的问题是这个主对话框有两个不同的实例,但看起来并非如此。

是否有可能某些其他代码会覆盖第一个对话框设置的字符串值? 你能不能将字符串设为公开并添加一个getter和一个setter,这样你就可以轻松地在这个字段的变化上有一个断点?这样,您就可以看到代码访问它了什么。