ClistCtrl中获取鼠标移动时的位置,该怎么解决
ClistCtrl中获取鼠标移动时的位置
本人使用的是Report模式
在 BOOL CCSVFormView::PreTranslateMessage(MSG *pMsg)函数中,
可否通过如下语句得到,当鼠标框选时,在ListCtrl中选中了哪些子项?
{
........
if ( pMsg->message == WM_MOUSEMOVE && pMsg->hwnd == m_ListCtrl.m_hWnd )
{
if ( pMsg->wParam == MK_LBUTTON)
{
//获取当前鼠标位置,在 ListCtrl中哪个子项里
}
}
......
}
或者有其他的方法?
------解决方案--------------------
ListView_GetItemRect
------解决方案--------------------
int HitTest(
LVHITTESTINFO* pHitTestInfo
) const;
int HitTest(
CPoint pt,
UINT* pFlags = NULL
) const;
看看这个
------解决方案--------------------
typedef struct _LVHITTESTINFO {
POINT pt;
UINT flags;
int iItem;
int iSubItem;
} LVHITTESTINFO, *LPLVHITTESTINFO;
HitTest第一种方式的参数.这个应该可以,传进去POINT,可以得到这个POINT击中测试的iItem和iSubItem.
------解决方案--------------------
有句柄以后就可以用HitTest得到所在行
本人使用的是Report模式
在 BOOL CCSVFormView::PreTranslateMessage(MSG *pMsg)函数中,
可否通过如下语句得到,当鼠标框选时,在ListCtrl中选中了哪些子项?
{
........
if ( pMsg->message == WM_MOUSEMOVE && pMsg->hwnd == m_ListCtrl.m_hWnd )
{
if ( pMsg->wParam == MK_LBUTTON)
{
//获取当前鼠标位置,在 ListCtrl中哪个子项里
}
}
......
}
或者有其他的方法?
------解决方案--------------------
ListView_GetItemRect
------解决方案--------------------
int HitTest(
LVHITTESTINFO* pHitTestInfo
) const;
int HitTest(
CPoint pt,
UINT* pFlags = NULL
) const;
看看这个
------解决方案--------------------
typedef struct _LVHITTESTINFO {
POINT pt;
UINT flags;
int iItem;
int iSubItem;
} LVHITTESTINFO, *LPLVHITTESTINFO;
HitTest第一种方式的参数.这个应该可以,传进去POINT,可以得到这个POINT击中测试的iItem和iSubItem.
------解决方案--------------------
有句柄以后就可以用HitTest得到所在行