刚解决了
向你 的 树型控件发一个鼠标按下消息就可以//取消编辑状态
m_trRoot.SendMessage(WM_LBUTTONDOWN,0,0);要去听课了,还没解决给我消息

解决方案 »

  1.   

    经测试云帆(xiang_yun)的办法可行,但我还想问的是:这条消息发送出去后,响应这条消息的处理函数执行在先还是SendMessage的下一条语句执行在先?如果是SendMessage的下一条语句在先,那有没有办法让刚才发送的消息的处理函数先执行?
      

  2.   

    可以先测试一下嘛,看一下效果,如有需要可以在发消息之后加Sleep(),再测试一下,再看效果是不是已经解决问题.
      

  3.   


    仔细想想,这个问题好像存在逻辑错误!下面让我来分析:让用户点击 Item 时,进入编辑状态;这时,只要用鼠标点任何一个地方,或者按TAB键,就会退出编辑状态。根本就不需要你来处理。
    你真正需要处理的是:退出编辑状态时,你是否要接受用户的输入。
      

  4.   

    刚刚开始搞MFC,现在维护一个项目.
    这个问题的提出是这样的:测试DEBUG版的时候发现如果树节点处于编辑状态时,从菜单选择"删除"时会发生断言失败,.NET C++给出的消是"f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\winctrl2.cpp 第733行".可实际上我的电脑就没有F盘.
    我试图跟踪有关代码,但我水平有限,跟来跟去我也没跟出个名堂来.所以就想:既然处于选择状态时删除没有问题,那我只要在删除之前退出编辑状态不就可以了吗!所以提出以上问题.
    另外还要说明的是
    (1)"高手.高手.高高手"(zhoujianhei)的方法也是可行的.
    (2)我的程序在RELEASE版下是没有问题的.
    多谢诸位热心相助!
    我还要继续努力!
    如果大家有空不妨讨论一下上面我说的谁执行在前在后的问题!
      

  5.   

    "f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\winctrl2.cpp 第733行
    你工程里有这个文件,去掉它...
    或者你头文件目录列表里有这个目录,应该去掉了
      

  6.   

    To:jtkk
    我还想问的是:这条消息发送出去后,响应这条消息的处理函数执行在先还是SendMessage的下一条语句执行在先?如果是SendMessage的下一条语句在先,那有没有办法让刚才发送的消息的处理函数先执行? 发送消息后,一般情况下是相应消息的处理函数先执行
      

  7.   

    你可以SetFocus()到别的控件。或"高手.高手.高高手"(zhoujianhei)的方法
      

  8.   

    谢谢诸位!
    <<SendMessage与PostMessage>>:http://www.cnblogs.com/ahuo/archive/2007/07/21/826555.html
      

  9.   

    HTREEITEM hTreeItem = treeCtrl.GetSelectedItem();
    treeCtrl.SelectItem(hTreeItem);
    treeCtrl.SetFocus();
    m_temp = treeCtrl.GetItemText(hTreeItem);//m_temp这个值在以前记录,选中结点的内容 
     void  CXXDlg::OnEndLabelEdit(LPNMHDR   pnmhdr,   LRESULT   *pLResult)   
      {   
     
     TV_DISPINFO           *ptvinfo;   
     ptvinfo   =   (TV_DISPINFO   *)pnmhdr;   
     ptvinfo->item.mask   =   TVIF_TEXT;   
     treeCtrl.SetItem(&ptvinfo->item); 
     if(ptvinfo->item.pszText==NULL)        //未取消编辑,以前的内容没变,值没修改,返回以前的值
     treeCtrl.SetItemText(ptvinfo->item.hItem,m_temp);
      }