我点击树型控件的一个分支时程序会响应,但是连续点击同一分支是就不会响应了,请问如何能连续响应呢?

解决方案 »

  1.   

    是不是点击太快认为是double click 呢?
      

  2.   

    具体情况是我的树型控件中添加了几个分支,对应打开FormView。在树最后添加了一个分支用来关闭整个应用程序,使用的是MESSAGE方法,点击确定退出,点击取消撤消此操作,但是我点击取消后在选择退出分支后就得不到响应,只有去选择其他的分支后,再回来选择会响应。我想在点击取消按钮后在选择退出分支能连续得到响应。
      

  3.   

    你是在该TreeCtrl中用OnSelChange…()函数吧(即TVN_SELCHANGE消息)?它只有当选择项发生变化的时候才响应如果要每次都响应,估计得重载NM_CLICK函数,然后判断是否点中条目,如果点中条目,则执行其对应的操作,这样可能麻烦点。不过我觉得点一次就执行一次的方法不是很好,当然,这只是个人看法
      

  4.   

    呵呵,我刚才看了你二楼的说明,得出第二种可能:你单击取消按钮退出分支后,你原来那个TreeCtrl已经失去焦点,需要先激活(也就是你需要单击其他地方),然后再单击该条目才有反应这两者的判别在于,一是你重载的什么消息;二是你单击取消按钮后,点第一下退出没有反应,点第二下是否有反应。如果点第二下有反应,则是第二种情况(因为第一下已经帮TreeCtrl获取焦点了),否则就应该是第一种
      

  5.   

    谢谢风清高怎么仔细地帮我分析了问题。我的TreeCtrl中使用的是OnSelchangedTree()函数,点击第一下没反映,点第二下还是没反映,一直没有获得焦点,只有点击了其他分支后再点击退出分支才得到响应。我只需要在退出能得到连续响应,其他分支并不需要有此功能。
      

  6.   

    那就不是焦点的问题,就是你重载OnSelchangedTree()函数,达不到这个目的,因为该函数只有在这种情况下响应:当你点击的条目不同于你原来选中的条目时所以重载这个函数达不到你的这个目的,如前所说,可能需要重载OnClick…()函数,然后判断是否单击在“退出”条目上,如果是,就提醒退出,如果不是,直接调用其父类的该函数,应该就可以了当然,你在OnSelChanged…()函数中就要去掉当选中条目为“退出”时的处理,否则在“退出”第一次被选中时可能会响应两个函数
      

  7.   

    我所要添加的是NM_CLICK消息吗?还有个问提就是如过不是,直接调用其父类的该函数,就是调用OnSelchangedTree()函数吗?
      

  8.   

    应该是NM_CLICK,它会在你单击在该CTreeCtrl的任何地方都响应,需要用HitTest()函数获取单击条目的Handle,然后获取该条目的文本,看是否是“退出”…………
      

  9.   

    NM_CLICK添加好后,总是先响应OnSelchangedTree()导致第一次点击退出分支无响应,只有第二次次才会响应,点击取消按钮后马上点击其他分支也会出现“退出”的对话框,我想问问,如何实现直接调用其父类的该函数呢?