CListCtrl 和 CListBox的设置选中问题
来源:互联网 发布:淘宝刷500单多少钱一个 编辑:程序博客网 时间:2024/05/21 12:08
CListCtrl设置选中状态
1.使用CListCtrl的函数SetItemState(int nItem, UINT nState, UINT nMask);
如:
m_list.SetItemState(index,LVNI_FOCUSED | LVIS_SELECTED, LVNI_FOCUSED | LVIS_SELECTED); //设置行index为选中并高亮(如果未设置Focuse,被选中行会变为灰色)
state 字段就是设置item 的状态。 stateMask是设置影响到的状态。这样要修改 item 状态,就不需要先获取每个状态值,只需要在 stateMask 中指定要修改的某个或者某几个状态即可。例如这里要修改LVIS_SELECTED状态,只需要将 item 的 state 和 stateMask 都设置为LVIS_SELECTED ,如果stateMask没有LVIS_SELECTED,则state中的LVIS_SELECTED也不生效。
2.另外,要使被选中行高亮显示,除了将item 的 state 和 stateMask 都设置LVNI_FOCUSED之外,还要将List Control控件的Always show selection属性设置为TRUE(默认为FALSE,也就是说当前选择的 item 在控件非激活状态下是不显示选中行的)。
3.经过以上修改,在打开对话框之后,指定item在List Control控件中显示为选中状态,但是背景色是灰色,因为打开的对话框焦点不在List Control控件上,因此需要在对话框类的OnInitDialog()中加一句m_list.SetFocus(),同时将return TRUE改为return FALSE来指示窗口不按照Tab顺序来指定焦点。
item行选中:
SetItemState(item,
LVIS_SELECTED | LVIS_FOCUSED,
LVIS_SELECTED | LVIS_FOCUSED);
不选中:
SetItemState(item
0,
LVIS_SELECTED | LVIS_FOCUSED);
========================================================
如果CListBox的属性设置的是single的话,使用SetCurSel(i) 就可以选中某行。
但如果属性设置的是extended后(可以用ctrl和shift键),SetCurSel(i)就失效了。这个时候应该选择另外一个函数就是SetSel就可以。如果想实现单选要用SetSel先取消先前选中的行然后在设置当前要选中的行。
例如取消某行:
mList.SetSel(index,FALSE);
选中某行则为:
mList.SetSel(index,TRUE);
0 0
- CListCtrl 和 CListBox的设置选中问题
- CListCtrl 和 CListBox的设置选中问题
- CListBox和CListCtrl的区别
- CListbox和CListCtrl 使用
- MFC CListCtrl设置选中和不选中状态1
- 选中某一item,高亮显示(CListCtrl CTreeCtrl CListBox)
- CListCtrl 设置选中状态
- CListCtrl 设置选中状态
- CListCtrl 设置选中状态
- CListBox和CListCtrl添加右键菜单
- CListBox和CListCtrl练习之求素数
- CListCtrl删除选中行和CListCtrl的用法(详)
- CListCtrl删除选中行和CListCtrl的用法(详)
- CListCtrl 选中 和 取消选中
- CListCtrl 选中 和 取消选中
- MFC之CListBox、CListCtrl
- 关于CListCtrl中处理选中多行数据的问题
- CListCtrl控件删除多个选中行时问题的解决
- Oracle更新及事物操作
- linux服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)
- android api分析20 ContentProvider
- Thinking in Java_多态性
- 虚拟机NetworkAdapter三种方式的区别
- CListCtrl 和 CListBox的设置选中问题
- Zigbee协议栈(CC2530开发板):绑定
- 【LeetCode】Valid Palindrome
- RPM 命令介绍和应用
- ARM Linux对中断的处理--中断管理系统的初始化
- C++编程学习之LeetCode OJ
- C语言的规范
- POJ 1676
- Android开发 打开文件 选择文件对话框