我用ListBox和Edit组合做了一个可以直接编辑的列表框,开始响应的是单击左键,然后把Edit挪过去。看上去挺好的,后拉发现如果用键盘的上下键的话,马上就露馅了。于是又响应keydown,省点事就直接调的响应单击的函数。然后就有意思了,Edit挪的始终慢一拍,我分析是我的响应函数比默认的响应函数先执行。
不知道有什么办法让我的响应函数比默认的后执行。

解决方案 »

  1.   

    略懂搂主的意思,搂主是不是要做个每行可以编辑的列表控件?编辑时在选中的项目上单击,就可以编辑(类似于给文件重命名的方法)。是不是这个意思
    如果是,请先不要放置edit控件。在ListBox选取的时候去创建一个Edit
    然后用m_edt.ShowWindow(WS_SHOW)显示在需要修改的地方
      

  2.   

    应该重载CEdit,在Edit的PreTranslateMessage处理
      

  3.   

    通常的作法是在点击listbox时, 
    1、读listitem的文本 ==> SetWindowText(hEdit, ...);  ==> 在相应的位置上显示edit
    2、处理edit的EN_KILLFOCUS事件,设置listitem的文本, 隐藏edit
      

  4.   

    http://www.codeproject.com/combobox/lbed.asp采用在列表框中动态创建一个从CEdit派生的新类的方法实现。不知道对你有没有用,可以参照示例的实现方法。
      

  5.   

    出现这种问题原来是我截获的消息不对,应该截获selchanging。但是先调用默认的处理函数还是后调用,仍然是个问题——实践表明是先调用自己的处理函数,但有时候需要后调用,这是个问题。MFC可以在对应虚函数前做些操作,后面也可以做些操作,这也是一种策略吧。