MFC list control 控件判断当前选中行,设置行选中,取消行选中[通俗易懂]

MFC list control 控件判断当前选中行,设置行选中,取消行选中

大家好,又见面了,我是全栈君。

判断当前选中的行

下面是一个button(按钮)的触发事件,按钮按下检测list control(列表)控件是否有选中的行,把选中的删除。(m_list 是list control 的变量名)

void CListDis::OnBnClickedButton2()
{ 
   
	// TODO: 在此添加控件通知处理程序代码
	int iItem;
	BOOL flag;
	flag = false;    // 判断标志,判断是否有选中行
	for (iItem = m_list.GetItemCount() - 1; iItem >= 0; iItem--)   // 获取列表的行数,进行循环判断
	{ 
   
		//m_list.GetItemState(iItem,LVIS_SELECTED)
		if (LVIS_SELECTED == m_list.GetItemState(iItem, LVIS_SELECTED))     //选中行的判断
		{ 
   
			flag = true;
			CString cs;
			cs.Format(TEXT("删除当前选中的第%d行"), iItem+1);
			MessageBox(cs);
			m_list.DeleteItem(iItem);

			// 在这里面进行更新容器以及更新文件 
			list<user>::iterator iter = file.users.begin();
			for (int i = 0; i != iItem; iter++, i++);
			file.users.erase(iter);
			file.WriteUsers(file.users);
			MessageBox(TEXT("删除成功"));
		}
	}
	
	// 在没有选中行的情况下,给出一个提示
	if (!flag) { 
   
		MessageBox(TEXT("当前好像什么都没有选中喔"), TEXT("删除失败"));
	}
}

设置 list control 行选中

设置行选中还需要把把list control 的 Always show selection 属性修改为 True,默认情况下False。

m_list.SetFocus();      // 获取焦点在列表上面
// 设置第i行为选中的状态
m_list.SetItemState(i, LVNI_FOCUSED | LVIS_SELECTED, LVNI_FOCUSED | LVIS_SELECTED); 

取消当前选中的行

m_list.SetItemState(i, 0, -1);  // 把第i行设置为没有选中的状态
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115093.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 简单的udp攻击_udp flood攻击

    简单的udp攻击_udp flood攻击由于本人很菜,这个代码是改别人的.呵呵.可以在公司的局域网里搞搞坏,呵呵.我是在ubuntu8.04下的,需要gcc编译.这个也添加了广播,整个网段的人都能收到了#include#include#include#include//ip#include//tcp#include#includeunsignedshortip_su…

  • git切换远程分支然后怎么拉取(从远程拉取分支到本地分支)

    Git拉取远程分支到本地本地新建一个空白文件夹folder;进入folder目录,打开gitbash,用命令行初始化git仓库;$gitinit3.与远程仓库建立连接;//`http://xxx…`该网址为远程仓库`Game`的ip地址,可在远程仓库`Game`中进行查看$gitremoteaddoriginhttp://192.168.22.88:8000/102840/Game.git拉取远程分支到本地;//`cs`替换为远程分支名$gitf

  • 怎么升级node版本(node版本管理)

    今天安装了vuecli3,使用命令时报:YouareusingNodev8.4.0,butthisversionofvue-clirequiresNode&amp;amp;amp;amp;gt;=8.9.PleaseupgradeyourNodeversion.然后再用node-v,发现在本地的node版本是v8.4.0,有点老了,要升级了。可是,node怎么升级呢?有点慌…

  • python 数组转换为字典_char转换为string

    python 数组转换为字典_char转换为string先看下join函数:语法为:str.join(sequence)sequence–要连接的元素序列实例一:连接字符串str1=’-‘seq=(“a”,”b”,”c”)printstr1.join(seq)实例二:连接数组(数组元素为字符串)str2=’*’seq2=[“a”,”b”,”c”]printstr2.join(seq2)

  • pycharm2021激活码【2021.7最新】

    (pycharm2021激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~M…

  • android开机动画多长时间_Android开机动画及黑屏[通俗易懂]

    android开机动画多长时间_Android开机动画及黑屏[通俗易懂]platform:RK3399OS:Android7.11.Android各阶段动画Android动画主要分为关机充电动画和开机动画;开机动画又分为三个阶段:uboot阶段动画、kernel阶段动画、Android阶段动画。1.1uboot开机动画Uboot阶段由于大部分环境和驱动没有准备好,所有此阶段显示直接采用的framebuffer;而且严格来说只是图片,并不是动画。要在uboot阶…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号