在一个全局函数中想访问树视,
方法如下:
POSITION pos = theApp.m_pDocTemplate->GetFirstDocPosition();
CDocument *pDoc = theApp.m_pDocTemplate->GetNextDoc(pos);

pos = pDoc->GetFirstViewPosition();
CTreeView *pView = (CTreeView *)pDoc->GetNextView(pos);
CTreeCtrl &tree = pView->GetTreeCtrl();
HTREEITEM root, group_item, case_item;
CString item_text;
int flag = 0;
root = tree.GetRootItem();
跟踪的时候:
pView    0X00456100 {CMyView hWnd=???} //???啥意思
root 为空
我只打开一个文档,并且树视已经显示?多谢大侠救命

解决方案 »

  1.   

    pView    0X00456100 {CMyView hWnd=???} 
    从字面意思看,表示pView这个指针地址是有了,但是窗口句柄不能显示?如果你只打开一个view,用
    ((CMainFrame *)AfxGetMainWnd())->GetActiveView()就得到view了,不用那么麻烦
      

  2.   

    ASSERT(pView->IsKindOf(RUNTIME_CLASS(CMyView))) ; 
      

  3.   

    确实看你的pView是找到了我问一下,你只有这么一个文档类吗?只有一个CTreeView视图类吗?
      

  4.   

    你 的 全局函数,要在VIEW的CREATE之后调用
      

  5.   

    while (pos != NULL)
    {
      CTreeView *pView = (CTreeView *)pDoc->GetNextView(pos);
      //之后应该判断一下是不是CTreeView 
      if(pView->IsKindOf(RUNTIME_CLASS(CMyView))) 
      {
        root = tree.GetRootItem();
      }
    }
      

  6.   

    谢谢大家,我重复一下我的问题我在视图类中定义了一个CTreeCtrl mytree;
    我在App中调用的标准打开操作
    m_pDocTemplate->OpenDocumentFile(NULL);
    在视图的OnInitialUpdate()中mytree.Create(...)这样视树就显示出来了我在全局函数中想访问mytree?
    怎么做
      

  7.   

    把mytree的m_hWnd传给全局函数,然后用CWnd::FromHandle()得到啊,
    CTreeCtrl* gp_tv=(CTreeCtrl*)FromHandle(hWnd)