抽屉式界面,每个视图包含一个树形控件,现在想在按Ctrl+F,输入一个参数(第几个视图,树的哪一个节点),然后根据这个参数将焦点移到对应的树形节点上?

解决方案 »

  1.   

    嗯。问题在哪里?有几个视图你是知道的吧。那么要显示哪个视图是没有问题了。至于树的哪一个节点,不知道你这个函数用什么作为参数,反正就是搜索呗。找到对应的节点就select
      

  2.   

    恩,“找到对应的节点就select“可以详细点吗?比如我在主界面添加一个Ctrl+F消息OnFind(),然后在函数里面怎么处理,比如抽屉界面一CTreelCtrl tree_one, 抽屉界面2 CTreectrl tree_two, 关键是在OnFind()里面怎么处理?
      

  3.   

    搜索树需要用到递归。树是一个典型的适合递归算法的玩意。
    递归:
    从树的GetRootItem/或从一个根节点开始,先GetChildItem获得第一个节点(也可能是根,是跟则调用递归),判断节点的文本(不知道你的节点信息是不是树节点的标题)是否为输入的节点参数。如果是,则OK,如果不是,则GetNextSiblingItem获得下一个节点(或者根,是跟则递归),继续节点循环。
    判断是否为根节点,用ItemHasChildren
      

  4.   

    还有的问题是“我现在抽屉视图1只能看见tree_one,而我界面输入尝试用tree_two.GetRootItem()报错!”继续关注!
      

  5.   

    我现在抽屉视图1只能看见tree_one,而我界面输入尝试用tree_two.GetRootItem()报错!”
    ===你先得转换当前视图阿。
      

  6.   

    还没有解决,继续顶
    如 抽屉1 CWndOne(父类为CObjWnd) -> CTreeOne
       抽屉2 CWndTwo(父类为CObjWnd) -> CTreeTwo
       现在我在CMainFrame中怎样灵活的操作CTreeTwo和CTreeOne?
    我测试:
       CTreeOne m_t1; 
       m_t1.GetRootItem();//错误!!
      

  7.   

    我测试:
       CTreeOne m_t1; 
       m_t1.GetRootItem();//错误!!
    ===晕死了,有这么写的么?你怎么在这里定义一个CTreeOne对象呢??????不错才怪阿。
    你要先得到抽屉1中的CTreeOne对象才可以。怎么能定义这么一个新实例呢。