Не в состоянии общаться между диалогами, передавая их объект в качестве ссылки! - PullRequest
1 голос
/ 04 марта 2010

Я хочу общаться между двумя или более диалоговыми окнами, когда я говорю «общаться». Это означает, что я хочу использовать переменные и функции во всех диалоговых окнах с обновленными значениями. Итак, я создал три основных диалоговых окна, рассматривая одно диалоговое окно как главное окно, в котором оно может иметь переменные и функции, и я создал переменную-указатель для 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();

так что проблема в том, скажем, если у меня есть переменная CString в maindialog .. Я могу вызвать эту переменную и присвоить значение в первом диалоге ... но когда я попытался получить доступ к этому значению в secondDialog..it ограничивает . нет значения .. Пожалуйста, дайте мне знать, если вы не в состоянии понять ..

1 Ответ

1 голос
/ 04 марта 2010

Потенциальная проблема состоит в том, чтобы иметь 2 разных экземпляра этого основного диалога, но это не так.

Возможно ли, что какой-то другой код перезаписывает строковое значение, установленное первым диалогом? Не могли бы вы сделать строку не общедоступной и добавить геттер и сеттер, чтобы вы могли легко иметь точку останова при изменении этого поля? Таким образом, вы увидите, какой код обращается к нему.

...