动态生成的树状控件,在派生自TreeView类的CLeftTreeView类中,在每个函数里都要作这样的声明:CTreeCtrl &m_Tree = this->GetTreeCtrl(),不然库函数SetItemData,InsertItem等就不能直接使用,能否在头文件中将m_Tree声明为全局变量,方便在类中直接调用

解决方案 »

  1.   

    在头文件中声明:CTreeCtrl* m_pctrlTree;  //成员变量
    在源文件OnInitialUpdate()中: m_pctrlTree = &GetTreeCtrl();
      

  2.   


    为什么呢?如果派生自TreeView类中有很多函数,定义为全局的不是更方便么
      

  3.   


    datoucaicai哥
    还是不行啊,我在LeftTreeView.h中声明CTreeCtrl* m_Tree,在LeftTreeView.cpp中m_Tree = &GetTreeCtrl();
    编译时报错.error C2228: left of '.InsertItem' must have class/struct/union type
      

  4.   

    为什么要定义成指针呢?直接定义成CTreeCtrl的引用噻。
      

  5.   

    //hxingz:为什么要定义成指针呢?直接定义成CTreeCtrl的引用噻。
    因为引用必须在声明的时候初始化,而这里定义成指针(类的成员变量),可以在整个类中使用//to 楼主:
    指针应该是m_Tree->InsertItem(...);
      

  6.   


    太感谢你了!按照你方法,把m_Tree定义成全局变量,下面的函数中用到m_Tree时可以直接使用了
      

  7.   


    按你的方法,定义全局变量是实现了,但是不能自动列出库函数,就是输完m_Tree->后应该会自动弹出一个列表框供选择库函数的,为什么这样定义后就不能自动弹出了呢
      

  8.   

    可以把m_Tree声明为类CLeftTreeView的成员变量.
      

  9.   

    m_Tree这里是定义成类的成员变量,不是全局变量不能自动列出库函数,跟是不是全局变量没关系你可以试试将工程文件中的ncb文件删除,再rebuild下,应该就可以了
      

  10.   

    m_Tree这里是定义成类的成员变量,不是全局变量不能自动列出库函数,跟是不是全局变量没关系你可以试试将工程文件中的ncb文件删除,再rebuild下,应该就可以了