MFC tab页面中获到其它页面的数据
比如tab标页面中添加了3个page. 分别对应3个类,如何在page3中 获到page2的 变量值 呢?
有多种方法,
1个可以通过在page3中定义一个放该3个page类的 类对像。通过这个类对像再去访问到各page.
另一个通过获取父类指针:
如下 可以通过((CMyOfficeView *)GetParent()->GetParent())->m_Page2.iTest;得到。
也可以通过((CMyOfficeView *)((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveView())->m_Page2.iTest
注意,由于各page是添加在了CMyOfficeView中,所以这里转成CMyOfficeView,
如((CMyOfficeView* )(AfxGetApp()->m_pMainWnd))->m_Page2.iTest; //获取不到iTest这种直接获取到m_pMainWnd 再转成CMyOfficeView 是不行的。
必须通过GetActiveView 获到了视类指针后才能正确的访问各page 中的变量。
BOOL CMyPropertyPage3::OnSetActive()
{
// TODO: 在此添加专用代码和/或调用基类
int iData = ((CMyOfficeView* )(AfxGetApp()->m_pMainWnd))->m_Page2.iTest; //获取不到iTest
//int data1 = ((CMyOfficeView *)GetParent()->GetParent())->m_Page2.iTest; //能获到 iTest = 100
CMainFrame *p = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CMyOfficeView *pv = (CMyOfficeView*)p->GetActiveView();
TRACE("iData1:%d.....:\r\n", ((CMyOfficeView *)((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveView())->m_Page2.iTest);
TRACE("iData2:%d.....:\r\n", (CMyOfficeView *)GetParent()->GetParent());
return CBCGPPropertyPage::OnSetActive();
}