问题不知道该怎么称呼,有兴趣来看看

happycock 2006-03-13 12:54:28
我用ListBox和Edit组合做了一个可以直接编辑的列表框,开始响应的是单击左键,然后把Edit挪过去。看上去挺好的,后拉发现如果用键盘的上下键的话,马上就露馅了。于是又响应keydown,省点事就直接调的响应单击的函数。然后就有意思了,Edit挪的始终慢一拍,我分析是我的响应函数比默认的响应函数先执行。
不知道有什么办法让我的响应函数比默认的后执行。
...全文
180 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happycock 2006-04-05
  • 打赏
  • 举报
回复
出现这种问题原来是我截获的消息不对,应该截获selchanging。但是先调用默认的处理函数还是后调用,仍然是个问题——实践表明是先调用自己的处理函数,但有时候需要后调用,这是个问题。MFC可以在对应虚函数前做些操作,后面也可以做些操作,这也是一种策略吧。
Snow_Ice11111 2006-03-13
  • 打赏
  • 举报
回复
http://www.codeproject.com/combobox/lbed.asp

采用在列表框中动态创建一个从CEdit派生的新类的方法实现。不知道对你有没有用,可以参照示例的实现方法。
chehw 2006-03-13
  • 打赏
  • 举报
回复
通常的作法是在点击listbox时,
1、读listitem的文本 ==> SetWindowText(hEdit, ...); ==> 在相应的位置上显示edit
2、处理edit的EN_KILLFOCUS事件,设置listitem的文本, 隐藏edit
striking 2006-03-13
  • 打赏
  • 举报
回复
应该重载CEdit,在Edit的PreTranslateMessage处理
happycock 2006-03-13
  • 打赏
  • 举报
回复
列表框默认处理单击事件和键盘事件,会使某项被选中。
单击的时候,先使某项被选中,然后响应消息处理函数,结果取得的选中项就是想要的。
使用上下键的时候,先响应的消息处理函数,然后改变选中项,结果在函数中取得的选中项还是没更新前的。
我分析就是这样,大家作过这方面的可以试试,我没使用键盘操作之前也没发现。
powerwin 2006-03-13
  • 打赏
  • 举报
回复
略懂搂主的意思,搂主是不是要做个每行可以编辑的列表控件?编辑时在选中的项目上单击,就可以编辑(类似于给文件重命名的方法)。是不是这个意思
如果是,请先不要放置edit控件。在ListBox选取的时候去创建一个Edit
然后用m_edt.ShowWindow(WS_SHOW)显示在需要修改的地方

15,975

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧