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();
}

posted @ 2019-02-25 17:05  伟大的厨师  阅读(485)  评论(0编辑  收藏  举报