List Control控件中及时捕获checkbox被选中的消息的解决方案
2017-07-10 10:35
381 查看
转自:http://blog.csdn.net/vycode/article/details/7345073
我的功能需求是:用户可以在List Control里添加item,当无选项被选中(即Checkbox没被选中),删除按钮不可用;当用户点击checkbox选中item时,删除按钮可用。
图示如下:
![](http://hi.csdn.net/attachment/201203/12/0_1331537339nrZN.gif)
图一 模拟图
运行后如下:
![](http://hi.csdn.net/attachment/201203/12/0_1331537565GVDB.gif)
图二 无选项被选中
![](http://hi.csdn.net/attachment/201203/12/0_13315375860Vt3.gif)
图三 有选项被选中
好了,废话不多说,直接上代码:
响应LVN_ITEMCHANGED消息函数:
不过在解决上述问题之前,我尝试了另外一个消息函数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里添加item,当无选项被选中(即Checkbox没被选中),删除按钮不可用;当用户点击checkbox选中item时,删除按钮可用。
图示如下:
![](http://hi.csdn.net/attachment/201203/12/0_1331537339nrZN.gif)
图一 模拟图
运行后如下:
![](http://hi.csdn.net/attachment/201203/12/0_1331537565GVDB.gif)
图二 无选项被选中
![](http://hi.csdn.net/attachment/201203/12/0_13315375860Vt3.gif)
图三 有选项被选中
好了,废话不多说,直接上代码:
响应LVN_ITEMCHANGED消息函数:
1 void CLicenseGenDlg::OnLvnItemchangedListResource(NMHDR *pNMHDR, LRESULT *pResult) 2 { 3 LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); 4 // TODO: Add your control notification handler code here 5 *pResult = 0; 6 int nItem,i; 7 nItem = m_list_resource.GetItemCount(); 8 9 bool mark = false; 10 for (i = 0; i < nItem && !mark; ++i) 11 { 12 if (m_list_resource.GetCheck(i)) 13 { 14 mark= true; 15 } 16 } 17 if (mark) 18 { 19 GetDlgItem(IDC_BTN_DELITEM)->EnableWindow(TRUE);//有list选项选中后使删除按钮可用 20 } 21 else 22 { 23 GetDlgItem(IDC_BTN_DELITEM)->EnableWindow(FALSE);//无lisr选项选中使删除按钮变灰 24 } 25 }
不过在解决上述问题之前,我尝试了另外一个消息函数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被选中的消息的解决方案
- 获取ListControl控件中(复选框)CheckBox的状态
- WIN SDK 添加Tab控件 List Control with CheckBox
- 获取ListControl控件中(复选框)CheckBox的状态
- 【转帖】BCGControlBar使用心得--如何捕获Workspace bar类上的树控件的消息
- MFC中为ListControl控件添加NM_CLICK消息选择控件中的文件并获取文件路径和文件名字
- ListControl控件怎么响应双击消息
- BCGControlBar使用心得--如何捕获Workspace bar类上的树控件的消息
- 【转帖】BCGControlBar使用心得--如何捕获Workspace bar类上的树控件的消息
- CheckBoxList控件基本用法 如何给DropDownList控件添加边框[整理]
- List Control 控件的使用
- 复选空件和复选组控件(CheckBox和CheckBoxList)
- ASP.NET 2.0中的友好CSS控件适配器的应用 - 用ul、li呈现CheckBoxList和RadioButtonList
- ASP.NET 2.0中的友好CSS控件适配器的应用 - 用ul、li呈现CheckBoxList和RadioButtonList
- ASP.NET 2.0中的友好CSS控件适配器的应用 - 用ul、li呈现CheckBoxList和RadioButtonList
- 在服务器端得到CheckBoxList控件最后选择项的方法!
- ASP.NET2.0中CheckBoxList控件与数据库绑定(学习)
- [导入]在服务器端得到CheckBoxList控件最后选择项的方法
- 用JavaScript获取Asp.net服务器端控件CheckBoxList的选中值数组
- [导入]在服务器端得到CheckBoxList控件最后选择项的方法