zoukankan      html  css  js  c++  java
  • 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.....: ", ((CMyOfficeView *)((CMainFrame *)AfxGetApp()->m_pMainWnd)->GetActiveView())->m_Page2.iTest);
        TRACE("iData2:%d.....: ", (CMyOfficeView *)GetParent()->GetParent());


        return CBCGPPropertyPage::OnSetActive();
    }

  • 相关阅读:
    C++ unordered_set运用实例
    C++ Multimap运用实例—查找元素
    C++ Multimap运用实例
    C++ Map运用实例
    C++ Set运用实例
    C++ list运用实例
    C++ vector使用实例
    c++ Array运用实例
    C++ int double float对应的长度以及二进制
    引用和指针有什么区别
  • 原文地址:https://www.cnblogs.com/totogo/p/10431935.html
Copyright © 2011-2022 走看看