代码触发clistctrl控件的NM_CLICK事件
来源:互联网 发布:mac切换输入法快捷方式 编辑:程序博客网 时间:2024/05/16 14:59
首先,这是个比较简单的功能,也就是实现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
- 代码触发clistctrl控件的NM_CLICK事件
- HTML事件的控件触发
- HTML控件的事件触发
- Switch手写代码控件,触发事件
- VC6.0--CListCtrl中的NM_CLICK事件(CheckBox通过Shift与鼠标左键实现多选)
- 自定义MFC ClistCtrl控件的示例代码
- CListCtrl在处理NM_CLICK的时候,如何判断Ctrl SHIFT ALT键是否按下
- .net 触发自定义控件的事件
- 在控件的创建中触发事件
- 网页及其控件的触发事件
- JS触发服务器控件的单击事件
- 用户控件触发事件
- 用户控件触发事件
- 用户控件触发事件
- 代码触发Spinner的点击事件
- EXT.NET的代码触发事件,函数
- 代码控制按钮点击事件的触发
- 移动端左划右划事件触发简单的代码
- UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 0: illegal multibyte seque
- EntityFrameworkSection
- 分布式消息系统:Kafka
- qt编程 不现实命令行窗口
- 实例对象与类对象的简单区别
- 代码触发clistctrl控件的NM_CLICK事件
- 汇编之路-3
- java读写excel文件
- iOS事件处理---响应者链
- 奇怪的比赛
- 基于JSP+Servlet的用户登录验证
- C++虚继承(六) --- 虚继承浅析
- 多语言values文件夹创建
- Cordova各个插件使用介绍系列(五)—$cordovaGeolocation获取当前位置