[MFC] CListCtrl控件如何实现 实时(准时) 获取复选框选中与未选中的状态

3266 人浏览 | 时间: 2016-08-12 19:41:05 | 作者: codexia
CListCtrl m_List;
m_List.SetExtendedStyle(LVS_EX_CHECKBOXES)
可以设置每行项目都有复选框,但是该如何能 实时(准时) 地获取选中与未选中的状态?
我自己解决方法分别是:
1.创建一条线程,每秒循环调用 m_List.GetCheck(nIndex) 函数,进行异步检测复选框的状态,但是此方法不太好,万一 CListCtrl 项目有所变更,而我的线程刚好在循环当中,就会造成冲突现象,且这个方法太消耗资源.
2.重载消息回调函数 PreTranslateMessage(MSG* pMsg),下条件断点获取项目更改消息,此方法虽好,但是获取的是十进制数值,无疑增加了代码的阅读性.
请问这个问题该如何解决?

C++技术网解答:

    这个问题想复杂了。其实实现可以很简单。不过看提出的自己的解决方法,能感觉到你经验还是比较丰富的。这两天问题比较多,下班后都熬夜在解答问题,还写了教程文章,所以你的问题,现在才开始解答,请见谅。

    使用一个线程来不同的获取状态,确实是一个不错的选择。在其他很多地方的实时状态显示之类的,都是用额外的线程做的。不过,多线程编程中,一定要考虑到公共资源的互斥操作,以免破坏了资源,从而引发程序逻辑错误,得到不想得到的结果。Windows下多线程的编程问题,推荐你看《Windows核心编程》。

请微信扫码阅读。
为防止恶意爬虫,
已开启反爬机制,
理解哟~~~~
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0