vc++ 如何获取鼠标所在行?(不是点击)

来源:百度知道 编辑:UC知道 时间:2024/06/05 02:39:15
我用的vs2003,想在listctrl控件中得到鼠标所在行高亮显示,想请教如何获取鼠标移动到哪一行,并没有发生点击事件。
最好可以提供代码。我初学者。

listctrl 支持 hover select 属性。不需要扩展控件,

绑定一个控件变量 CListCtrl m_myListCtrl;( 这个应该会吧,对话框模式下,选listctrl,右键添加变量....,SDI/MDI模式,如果创建listctrl就应该有控件变量)。

在OnInitDialog里面添加
m_myListCtrl.SetExtendedStyle( LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE);

就行了。listctrl就会具有悬停高亮特性。

响应WM_MOUSEMOVE消息

afx_msg void OnMouseMove(
UINT nFlags,
CPoint point
)
{
int iItem = m_ListCtrl.HitText( point );
//iItem就是鼠标当前指向的项目。
if( iItem!=-1 )
m_ListCtrl.SetItemState( iItem, LVIS_SELECTED, LVIS_SELECTED );
}