我想让鼠标左键抬起后,获取哪些条目被选中了,,但压根就没处理WM_LBUTTONUP消息....倒是在双击的时候处理了。我用SPT++发现继承控件的确是收到WM_LBUTTONUP消息了,但为什么没有进入到OnLButtonUP函数呢????
解决方案 »
- 求教,vc6如何做到电脑弹屏,和qq新闻 一样
- 在连接服务器时,点击退出报内存错误
- 新手求教
- 有没有在visual studio下 讲com编程的书?
- 如何用程序使一个Edit框内的文本上/下滚动
- 使用播放列表如何使mediaplayer同时播放两个文件,一个视频一个音频,或有其他方式实现。
- 祝大家中秋快乐!
- 自定义消息报找不到消息定义方法
- _求Win2000专业版通过ADSL拔号实现上网软件。(是否有ENTERNET 300 FOR 2000?)
- 把类成员函数定义为时钟回调函数的问题
- CBCGPDialogBar窗体中的控件如何获取
- CDialogEx类怎样初始化?怎么没有像CDialog类初始化的OnInitDialog()函数
楼主可以这样验证一下:
如果接收不到WM_LBUTTONUP消息,那应当会接收到WM_CAPTURECHANGED消息,添加WM_CAPTURECHANGED消息处理函数试试.
ButtonDOWN(SetCapture) -> Move -> Up(ReleaseCapture),似乎没有错误.
然而,一个窗口会意外的失去焦点(比如在进入Move状态后,用户按了Alt+TAB切换了窗口的焦点),这个时候流程为:DOWN(SetCapture) -> Move ->Lose Capture ... (收不到Up消息)
我重载后,CListCtrl的父窗口和CListCtrl类本身都没有调用SetCapture。。但是现在却响应不了WM_LBUTTONUP消息。我应该如何使用SetCapture才能使CListCtrl接收并处理这个消息呢?
WM_LBUTTONDOWN以后会产生NM_CLICK通知,如果有NM_CLICK通知,WM_LBUTTONUP就不会产生了,NM_CLICK是一个通知消息,它是由WM_LBUTTONDOWN产生的,是否产生WM_LBUTTONUP与NM_CLICK的返回值有关。你可以在NM_CLICK消息响应中PostMessage发送一个WM_LBUTTONUP消息,或者在WM_LBUTTONDOWN消息响应函数中注释掉CListView::OnLButtonDown();的调用
你的解释很详细。谢谢你。
如果PostMessage WM_LBUTTONUP了,那么我的鼠标还没有弹起会不会就已经响应了UP消息?
如果我注释掉DOWN的调用了,那么我就无法选中条目了。我现在是想在CListCtrl中多选,然后将高亮的条目全部SetCheck,CLICK只能选中一条。
=>不会,你可以测试一下,当释放鼠标的时候才会进入OnClick函数,所以你在它的最后PostMessage就好.我现在是想在CListCtrl中多选,然后将高亮的条目全部SetCheck,CLICK只能选中一条。
=>只要取消clistctrl属性中的single selection单选属性,就可以实现按着Ctrl键来多选