hur.cn - 华软网

 热门搜索

CListCtrl 的SetCapture无效的问题

  作者:未知    来源:网络    更新时间:2011/5/13
代码如下
C++">
BOOL CMFCListCtrlEx::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
CPoint point;
point.x=GET_X_LPARAM(pMsg->lParam);
point.y=GET_Y_LPARAM(pMsg->lParam);
LVHITTESTINFO   lvhti;
lvhti.pt=point;
if(SubItemHitTest(&lvhti)>=0)
{
if(pMsg->message==WM_LBUTTONDOWN)
{
if(!m_IsEditing)
{

bMouseDown=true;
SetFocus();
SetItemSelect(lvhti.iItem,lvhti.iSubItem,TRUE);
SetCapture();
}

}
}
if(pMsg->message==WM_MOUSEMOVE)
{
....
}
if(pMsg->message==WM_LBUTTONUP)
{
bMouseDown=false;
ReleaseCapture();
}
if(pMsg->message==WM_CAPTURECHANGED)
{
bMouseDown=false;
}
}

鼠标点击后拖拽
当鼠标离开CListCtrl后无法响应WM_LBUTTONUP消息,也无法响应WM_CAPTURECHANGED
但是在控件内可以响应WM_LBUTTONUP
SetCapture();加不加没任何效果
CMFCListCtrlEx派生于CMFCListCtrl
---华软 网友回答---
CListCtrl可能不支持Capture...
---华软网友回复---
引用 1 楼 healer_kx 的回复:
CListCtrl可能不支持Capture...

等了这么久,没有任何新的信息,难道真的不支持了?
---华软网友回复---
用那个_TrackMouseEvent,这个可以检测到鼠标离开的事件,楼主看看这一个:
http://blog.csdn.net/chaosllgao/archive/2011/04/04/6301005.aspx
讲的那个东西
---华软网友回复---
引用 3 楼 hnwyllmm 的回复:
用那个_TrackMouseEvent,这个可以检测到鼠标离开的事件,楼主看看这一个:
http://blog.csdn.net/chaosllgao/archive/2011/04/04/6301005.aspx
讲的那个东西

这个也只能检测鼠标是否离开,而我是想要在鼠标离开窗体后仍然能够捕捉到鼠标的移动
不过你这个也有一定的帮助~~
---华软网友回复---
引用 3 楼 hnwyllmm 的回复:
用那个_TrackMouseEvent,这个可以检测到鼠标离开的事件,楼主看看这一个:
http://blog.csdn.net/chaosllgao/archive/2011/04/04/6301005.aspx
讲的那个东西

很奇怪的,我在WM_MOUSELEAVE消息里面SetCapture();却有效,在鼠标离开这个控件后也能捕捉到WM_LBUTTONUP,但是在WM_LBUTTONUP的ReleaseCapture();却无效了,所有的鼠标信息都被这个控件捕捉了,只有关掉这个对话框重开才恢复正常      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。