CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理

LVN_BEGINDRAG 鼠标左键正在被触发以便进行拖放操作(当鼠标左键开始拖拽列表视图控件中的项目时产生)

LVN_BEGINRDRAG 鼠标右键正在被触发以便进行拖放操作(当鼠标右键开始拖拽列表视图控件中的项目时产生)

LVN_BEGINLABELEDIT 开始编辑项的文本

LVN_COLUMNCLICK 单击列(当鼠标单击列表视图控件列标题时产生)

NM_CLICK 当鼠标单击列表视图控件时产生

LVN_COLUMNCLICK 单击列

LVN_DELETEALLITEMS 删除所有项

LVN_DELETEITEM 删除某个项

NM_DBLCLK 当鼠标双击列表视图控件时产生

LVN_ENDLABELEDIT 结束对项文本的编辑

LVN_GETDISPINFO 请求需要显示的信息

LVN_GETINFOTIP 请求显示在工具提示窗口内的附加的文本信息

LVN_HOTTRACK 鼠标滑过某个项

LVN_INSERTITEM 当向列表视图控件插入项目时产生

lVN_ITEMACTIVATE 激活某个项

LVN_ITEMCHANGED 某个项已经发生变化

LVN_ITEMCHANGING 某个项目正在发生变化

NM_KILLFOCUS 当视表列图控件失去焦点时产生

LVN_KEYDOWN 某个键被按下

LVN_MARQUEEBEGIN 开始某个边框选择

NM_OUTOFMEMORY 当内存溢出时产生

LVN_ODCACHEHINT 虚拟列表控件的显示区域的内容发生了变化

LVN_ODSTATECHANGED 虚拟列表的控件的某个项或某个范围内的项已经发生变化

LVN_ODFINDITEM 需要拥有者查找一个特定的回调项

NM_RCLICK 当鼠标右键单击列表视图控件时产生

NM_RDBLCLK 当鼠标右键双击列表视图控件时产生

NM_SETFOCUS 当列表视图控件获得焦点时产生

LVN_SETDISPINFO 父窗口必须更新控件为项所维护的信息

注解:

HDN:Header Notify
LVN:ListView control Notify
NM:Notify Message
TVN:TreeView control Notify

LVN_ITEMCHANGED消息的处理

消息处理函数:

void C***Dlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

if(pNMListView->uChanged==LVIF_STATE)
{
if(pNMListView->uNewState & LVIS_SELECTED)
   {
    //处理内容
    int nItem=pNMListView->iItem;
    CString value[6];
    for(int i=0;i<6;i++)
    {
     value[i]=m_List.GetItemText(nItem,i);
    }
   }
}

*pResult = 0;
}

消息处理函数中的两个if条件句一定要有,否则可能出现多次进入处理内容的问题

鼠标双击列表项事件的处理

响应NM_DBLCLK消息:

void CDisSalaryDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW *pNMListView=(NM_LISTVIEW *)pNMHDR;

int nItem=pNMListView->iItem;
if(nItem>=0 && nItem<m_List.GetItemCount())            //判断双击位置是否在有数据的列表项上面
{
    .............
}

*pResult = 0;
}

消息处理函数中的if语句很重要,用于判断双击位置是否在有数据的列表项上面。因为NM_DBLCLK消息是CListCtrl控件(整体)消息,只要是在CListCtrl控件范围之内执行此事件就会产生该消息,而不一定要在有数据的列表项上面。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CListCtrl是MFC中的列表件,可以显示数据列表并提供各种交互功能。以下是CListCtrl的所有事件: 1. NM_CLICK:当用户单列表件中的某一项时触发。 2. NM_DBLCLK:当用户双列表件中的某一项时触发。 3. LVN_ITEMCHANGED:当列表件中的某一项的状态发生改变时触发,例如选中或取消选中。 4. LVN_BEGINLABELEDIT:当用户开始编辑列表件中的某一项时触发。 5. LVN_ENDLABELEDIT:当用户结束编辑列表件中的某一项时触发。 6. LVN_COLUMNCLICK:当用户单列表件的表头时触发。 7. LVN_DELETEITEM:当删除列表件中的某一项时触发。 8. LVN_GETDISPINFO:当需要获取列表件中某一项的数据时触发。 9. LVN_INSERTITEM:当插入列表件中的某一项时触发。 10. LVN_ITEMACTIVATE:当用户激活列表件中的某一项时触发。 11. LVN_ODFINDITEM:当需要查找列表件中的某一项时触发。 12. LVN_ODSTATECHANGED:当列表件中某一项的选中状态发生改变时触发。 13. LVN_SETDISPINFO:当需要设置列表件中某一项的数据时触发。 14. LVN_KEYDOWN:当用户按下键盘上的某个键时触发。 15. LVN_HOTTRACK:当用户将鼠标悬停在列表件中的某一项上时触发。 16. LVN_GETINFOTIP:当需要获取列表件中某一项的提示信息时触发。 17. LVN_ITEMCHANGING:当列表件中的某一项即将发生改变时触发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值