转自:http://blog.csdn.net/vycode/article/details/7345073

我的功能需求是:用户可以在List Control里添加item,当无选项被选中(即Checkbox没被选中),删除按钮不可用;当用户点击checkbox选中item时,删除按钮可用。

图示如下:

图一 模拟图

运行后如下:

图二 无选项被选中

图三 有选项被选中

好了,废话不多说,直接上代码:

响应LVN_ITEMCHANGED消息函数:

 void CLicenseGenDlg::OnLvnItemchangedListResource(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = ;
int nItem,i;
nItem = m_list_resource.GetItemCount(); bool mark = false;
for (i = ; i < nItem && !mark; ++i)
{
if (m_list_resource.GetCheck(i))
{
mark= true;
}
}
if (mark)
{
GetDlgItem(IDC_BTN_DELITEM)->EnableWindow(TRUE);//有list选项选中后使删除按钮可用
}
else
{
GetDlgItem(IDC_BTN_DELITEM)->EnableWindow(FALSE);//无lisr选项选中使删除按钮变灰
}
}

不过在解决上述问题之前,我尝试了另外一个消息函数NM_CLICK,虽然能达到获知list改变消息,但不能及时捕获checkbox状态,总是慢了一个鼠标点击动作时间段。
附录:

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

List Control控件中及时捕获checkbox被选中的消息的解决方案的更多相关文章

  1. OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中

    OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Co ...

  2. 浅析:点击父控件时,子控件中的textview自动进入选中状态

    原因:父控件属性android:clickable="true",而textview之类的自控件默认不可点击,没有独立的点击监听,这样选中父控件时,textview之类的子控件也进 ...

  3. 在VC++中使用Tab Control控件

    系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:在模态或非模态对话框中使用Tab Control控件,及引申在单/多文档中使用 查阅MSDN文档,对于创建T ...

  4. 实现DataGridView控件中CheckBox列的使用

    最近做WindowsForms程序,使用DataGridView控件时,加了一列做选择用,发现CheckBox不能选中.搜索后,要实现DataGridView的CellContentClick事件,将 ...

  5. GridView控件中Checkbox实现单选

    在GridView控件中,第0列有放一个CheckBox控件,现想实现对CheckBox进行单选. 先看看效果: 在ASPX页面,可以这样做: 有一点注意的是需要使用OnRowCreated事件. 在 ...

  6. 获取不到Repeater控件中的CheckBox选中状态

    写在前面的话:在做一个项目的时候,需要使用到Repeater控件,并且在Repeater控件内放置了CheckBox控件来标志需要删除的行,选中后,在后台取到的CheckBox的值总是为false.最 ...

  7. MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

    版权声明:本文为博主原创文章,转载请注明CSDN博客源地址! 共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/26404733   ...

  8. MFC编程 | tab control控件的使用

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // tab control控件的使用 // 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C- ...

  9. WinForm 批量设置指定控件中的控件状态

    在开发中常遇到当点击某个按钮的时候,禁用文本框或按钮的的状态,以防止误操作,下面的代码是我已批量设置指定控件中的按钮状态的代码,同理可以延伸出很多操作. /// <summary> /// ...

随机推荐

  1. AFNetworking3.0使用简介

    注意到咱们集成的版本为3.0.4. 下面的类已从AFNetworking 3.0中废弃: AFURLConnectionOperation AFHTTPRequestOperation AFHTTPR ...

  2. loj#2269. 「SDOI2017」切树游戏

    还是loj的机子快啊... 普通的DP不难想到,设F[i][zt]为带上根玩出zt的方案数,G[i][zt]为子树中的方案数,后面是可以用FWT优化的 主要是复习了下动态DP #include< ...

  3. html(HyperText Markup Language)--超文本标记语言

    1.html的简介? * 什么是html? ** HyperText Markup Language:超文本标记语言,网页语言 ** 超文本:超出文本的范畴,使用html可以轻松实现这样操作: ** ...

  4. 让django完成翻译,迁移数据库模型

    声明:此Django分类下的教程是追梦人物所有,地址http://www.jianshu.com/u/f0c09f959299,本人写在此只是为了巩固复习使用 上篇我们完成了数据库模型的代码,但是还只 ...

  5. Linux学习之路(四)帮助命令

    帮助命令man .man 命令 #获取指定命令的帮助 .man ls #查看ls的帮助 man的级别 1 查看命令的帮助 2 查看可被内核调用的函数的帮助 3 查看函数的函数库的帮助 4 查看特殊文件 ...

  6. Mybatis中的like模糊查询

    1.  参数中直接加入%% param.setUsername("%CD%");      param.setPassword("%11%"); <sel ...

  7. hdu 6121 Build a tree

    /** * 题意:一棵 n 个点的完全 k 叉树,结点标号从 0 到 n - 1,求以每一棵子树的大小的异或和. * 解法:k叉树,当k=1时,特判,用xorn函数,具体解释:http://blog. ...

  8. codeforces 659C C. Tanya and Toys(水题+map)

    题目链接: C. Tanya and Toys time limit per test 1 second memory limit per test 256 megabytes input stand ...

  9. numpy中的tile函数

    tile()函数可以很方便的生成多维数组.它有两个参数,第一个数是原始数组;第二个表示如何来生成,第一个数字表示生成几行,第二个表示每行有多少个原始数组(如果只写一个数字,那么就默认是一行). fro ...

  10. 解决Linux Kettle出现闪退问题

    linux环境, 运行sh spoon.sh打开图形化界面时经常出现闪退情况. 报错信息如下: cfgbuilder - Warning: The configuration parameter [o ...