在对话框上创建了两个属性页,这两个属性页之间怎么通讯

在对话框上创建了两个属性页,这两个属性页之间如何通讯?
主对话框 CTabDlg.h
#include "Pag1.h"
#include "Pag2.h"

 CPag1 m_Page1Dlg;
 CPag2 m_Page2Dlg;

主对话框 CTabDlg.cpp
BOOL CTabDlg::OnInitDialog()
{
...
m_Page1Dlg.Create(IDD_PAG1_DIALOG, this);
  m_Page2Dlg.Create(IDD_PAG2_DIALOG, this);
  CRect rcDlgs;
  GetDlgItem(IDC_DLG_AREA)->GetWindowRect(rcDlgs);
  ScreenToClient(rcDlgs);

  rcDlgs.top = 50;
  rcDlgs.left = 350;
  rcDlgs.bottom = rect.bottom -50;  
  rcDlgs.right = 775;
   
  m_Page1Dlg.MoveWindow(rcDlgs); //第1个属性页
  m_Page1Dlg.ShowWindow(SW_SHOW); 

  rcDlgs.top = 50;
  rcDlgs.left = 780;  
  rcDlgs.bottom = rect.bottom -50; //第2个属性页
  rcDlgs.right = rect.right-60;
  m_Page2Dlg.MoveWindow(rcDlgs);  
  m_Page2Dlg.ShowWindow(SW_SHOW);
  ////两个属性页都显示出来了,
class CPag1 : public CPropertyPage
{
  DECLARE_DYNCREATE(CPag2)

class CPag2 : public CPropertyPage
{
  DECLARE_DYNCREATE(CPag2)
public:
  void SetData(CString str)
  {
  m_Edit1.SetWindowText(str);
  }

在 CPag2上有个m_Edit1 

现在CPag1, 与CPage2两个属性页之间通信

在CPag1.cpp
   
  CTabDlg* MainDlg=(CTabDlg*) GetParent()->GetParent(); //获取主对话窗 指针
  框CPag2* View2=(CPag2*) MainDlg->GetParent(); //在主对话窗获取属性2指针
   
  View2->SetData("发送成功."); // 调用CPag2的函数SetData()将数据传给CPag2属性页
但执行有问题,不成功啥问题呀?????

------解决方案--------------------
MainDlg->GetParent(); 主对话框的父窗口怎么会是属性页呢
------解决方案--------------------
CTabDlg* MainDlg=(CTabDlg*) GetParent()->GetParent(); //获取主对话窗 指针
主对话框里有成员m_Page1Dlg和 m_Page2Dlg
直接 MainDlg->m_Page1Dlg....操作就可以了

------解决方案--------------------
通过该他们公共的父窗口来中转即可