代码触发clistctrl控件的NM_CLICK事件

首先,这是个比较简单的功能,也就是实现CListCtrl控件可以处理完当前行后自动换到下一行而且自已选中,思路很简单,先给CListCtrl控件添加个NM_CLICK事件响应函数,手动或者自动都行。

然后用代码选中需要显示的行,代码如下:
m_List.SetFocus()
m_List.SetItemState(nItem,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);

m_List.SetFocus()
m_List.SetItemState(nItem,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);

第一句需要添加,网上有的贴子写选中行时没有添加第一行,也就是没有设置焦点,这样第二句不会生效,也就是不会选中。

选中之后,剩下的就是给窗口发事件通知了,其实我们这个事件的过程是当用户手动点击了List控件的某一行时,控件知道自己被点击了,然后给父窗口发送事件通知,而父窗口收到通知后会查相应的事件响应,查找到对应的响应函数。所以,我们要做的就是模拟用户单击CListCtrl控件,给窗口发消息。

代码很简单,如下:

NMLISTVIEW nmListView;
nmListView.iItem = nItem; //告诉响应函数选中的是第几行,如果为-1则为不选中
nmListView.hdr.code = 事件类型(我们这里写NM_CLICK);
nmListView.hdr.idFrom = 控件ID; nmListView.hdr.hwndFrom = 控件自己的窗口句柄;
::SendMessage(响应的窗口句柄,WM_NOTIFY,NULL,(LPARAM)&nmListView);

NMLISTVIEW nmListView;
nmListView.iItem = nItem; //告诉响应函数选中的是第几行,如果为-1则为不选中
nmListView.hdr.code = 事件类型(我们这里写NM_CLICK);
nmListView.hdr.idFrom = 控件ID; nmListView.hdr.hwndFrom = 控件自己的窗口句柄;
::SendMessage(响应的窗口句柄,WM_NOTIFY,NULL,(LPARAM)&nmListView);

嗯嗯。很简单吧,虽然很简单,但还是发出来,给有需要的同学用用!!

本文出自 “西边太阳” 博客,请务必保留此出处http://thgenius.blog.51cto.com/1042803/1337542

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值