MFC tab页面中获到其它页面的数据

本文详细介绍了在MFC框架下,如何实现在不同页面(page)之间进行变量的访问和传递。通过具体代码示例,展示了两种有效的方法:一是通过在页面中定义类对象来访问;二是利用父类指针获取所需页面的变量值。文章还特别指出,正确访问页面变量需通过GetActiveView()获取视类指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/totogo/p/10431935.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值