怎么在1个非模态对话框中获取另外一个非模态对话框窗口的指针

如何在1个非模态对话框中获取另外一个非模态对话框窗口的指针?
创建了1个基于对话框的MFC程序,然后生成了两个非模态对话框窗口dlg1和dlg2.
现在想在dlg1.cpp文件中使用dlg2的指针,该如何获取呢?
FindWindow()不行呀。
------最佳解决方案--------------------
如果是修改对方窗口控件的内容,建议不要用这种方法,等于你强行控制另一个窗口的内容。也许今天是IDC_EDIT1,但如果dlg2是另一个人开发,那么就可能变为IDC_EDIT2,这样会影响到你的dlg1也要进行修改。
所以,至少你也应该在dlg2中封装一个函数,用于接收其它窗口对IDC_EDIT1信息的修改,然后这里改为调用这个函数,在函数中设置IDC_EDIT1的信息,这样责任就比较明确了。
------其他解决方案--------------------
不过直接用指针
先个Dialog都有HWND,生成的时候记住,用的时候SendMessage就可以了。这样比用指针安全,调用也方便,尤其是窗口很多,每个Dialog又派生出子类。
------其他解决方案--------------------
不错啊,恭喜一下
------其他解决方案--------------------
最简单的方法是用全局变量

弄个全局变量:
CWnd * g_pWndDlg2;

在dlg2的OnInitDialog函数中:
g_pWndDlg2 = this;
------其他解决方案--------------------
首先当前dlg2的指针对象你是在哪个类中定义的?一方面可以在dlg1中通过主对话框来获取这个dlg2的指针对象,也许需要增加一些接口函数,如果dlg2所在的位置比较深的话;另一方面可以在dlg1对象运行前,获得dlg2对象的指针传递给dlg1对象(在dlg1对象中记录dlg2对象的指针)
------其他解决方案--------------------
各位,琢磨了一会儿,我最终是这么做的,把问题解决了,请评价一下此做法的合理性。
首先在程序对话框即主对话框中添加两个成员变量指针CDlg1* pdlg1 和CDlg2* pdlg2 ,用于指向两个非模态对话框窗口dlg1和dlg2;
第二部,如下代码可以生成两个非模态对话框窗口,这没有什么好说的。
         pdlg1 = new CDlg1;
pdlg1->Create(IDD_DIALOG1);
pdlg1->ShowWindow(SW_SHOW);
        pdlg2 = new CDlg2;
pdlg2->Create(IDD_DIALOG2);
pdlg2->ShowWindow(SW_SHOW);
关键是第三部:我打算在对话框dlg1中操作dlg2的页面显示,采用如下方法:
void CDlg1::OnBnClickedButton1()//这是dlg1.cpp中的一个按钮响应函数
{
CTestNewDlg* ptestnew = (CTestNewDlg*)GetParent();//获取程序对话框即主对话框的指针

if (ptestnew->pdlg2 != NULL)//检测dlg2窗口是否存在!
{
ptestnew->pdlg2->SetDlgItemText(IDC_EDIT1,"中国");//在dlg1中操作dlg2
}
}


请评价此做法是否存在不安全的地方,谢谢。