MFC获取View类指针

现在知道的有三种方法:


      1.当只有一个view类的时候,或者只想获取当前活动的view类,这时可以采用这种方法。
      在当前使用的类中添加如下代码:
    CMainFrame*   pFrame=(CMainFrame*)AfxGetMainWnd();   
    CListCtrlView* pView = (CListCtrlView*)pFrame->GetActiveView();
      2.view类中有相同的功能,或要循环访问各个view类,此时可以采用这种方法。
      在当前使用的类中添加如下代码:


     POSITION   POS;   
     POS = AfxGetApp()->GetFirstDocTemplatePosition();   
     CDocTemplate*   pDocTemplate = AfxGetApp()->GetNextDocTemplate(POS);   
     POS = pDocTemplate->GetFirstDocPosition();   
     CDocument*   pDoc=pDocTemplate->GetNextDoc(POS);   
     POS = pDoc->GetFirstViewPosition();
    CView*   pView;
     while (POS != NULL)
     {
         pView=(CView*)pDoc->GetNextView(POS);
        if( pView->IsKindOf( RUNTIME_CLASS(CListCtrlView) ) )
        {
                 //添加自己的处理代码 ;
        }
     }
      3.最后一种,也是我遇到的一种,要在CMainFrame中只访问多个view类中的特定的一个view类。
      前提条件:进行了窗口的切分。
      (1)在MainFrame.h中定义各个view类的指针,如:CListCtrlView* pListView;CWinPcapView* pCapView;
      (2)在OnCreateClient函数中添加代码(注意:要在完成切割后添加)。如:
//切分窗口的语句:
    if(m_SplitWnd.CreateStatic(this,1,2) == NULL)
        return TRUE;
    m_SplitWnd.CreateView(0,0,RUNTIME_CLASS(CListCtrlView),CSize(80,0),pContext);
    m_SplitWnd.CreateView(0,1,RUNTIME_CLASS(CWinPcapView),CSize(200,0),pContext);
    pListView=(CListCtrlView*)m_SplitWnd.GetPane(0,0);      //该句得到CListView类的指针
如此就可以在其他函数中用这个CListView类的指针了。
使用的方法是:首先取得CMainFrame类的指针,得到该类中我们想要的指针变量。如:
CMainFrame*   pFrame=(CMainFrame*)AfxGetMainWnd();  
CListCtrlView* pView = (CListCtrlView*)pFrame->pListView;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值