CListCtrl中高亮插入行,条目上移下移

2024-03-30 00:20

本文主要是介绍CListCtrl中高亮插入行,条目上移下移,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 样式修改

在这里插入图片描述

2. 关键代码

BOOL CMFCApplication3Dlg::OnInitDialog()
{CDialogEx::OnInitDialog();// // 代码省略......//// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);			// 设置大图标SetIcon(m_hIcon, FALSE);		// 设置小图标// TODO:  在此添加额外的初始化代码m_btnMoveDown.EnableWindow(FALSE);m_btnMoveUp.EnableWindow(FALSE);m_MyListCtrl.InsertColumn(0, _T("测试"), 0, 100 );return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CMFCApplication3Dlg::OnBnClickedAddSomeItems()
{// TODO:  在此添加控件通知处理程序代码static std::default_random_engine dre(unsigned int(time(0)));std::uniform_int_distribution<int> uid(100, 999);CString strValue;strValue.Format(_T("测试文本--%d"), uid(dre));int nSelMark = m_MyListCtrl.GetSelectionMark();int nInsertIndex = m_MyListCtrl.GetSelectionMark();if (nInsertIndex < 0){nInsertIndex = m_MyListCtrl.GetItemCount() - 1;if (nInsertIndex < 0) nInsertIndex = 0;}nInsertIndex += 1;int nNewIndex = m_MyListCtrl.InsertItem(nInsertIndex, strValue);//设置当前行高亮	m_MyListCtrl.SetSelectionMark(nNewIndex);m_MyListCtrl.SetItemState(nNewIndex,LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);m_MyListCtrl.SetFocus();}//down
void CMFCApplication3Dlg::OnBnClickedMoveDown()
{int nSelIndex = m_MyListCtrl.GetSelectionMark();if (nSelIndex < 0 || nSelIndex >= m_MyListCtrl.GetItemCount() - 1){return;}//将文本值与扩展数据交换int nNextIndex = nSelIndex + 1;CString strNextText = m_MyListCtrl.GetItemText(nNextIndex, 0);m_MyListCtrl.SetItemText(nNextIndex, 0, m_MyListCtrl.GetItemText(nSelIndex, 0));m_MyListCtrl.SetItemText(nSelIndex, 0, strNextText);DWORD_PTR dwNextItemData = m_MyListCtrl.GetItemData(nNextIndex);m_MyListCtrl.SetItemData(nNextIndex, m_MyListCtrl.GetItemData(nSelIndex));m_MyListCtrl.SetItemData(nSelIndex, dwNextItemData);//设置行为高亮m_MyListCtrl.SetSelectionMark(nNextIndex);m_MyListCtrl.SetItemState(nNextIndex, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);m_MyListCtrl.SetFocus();}//up
void CMFCApplication3Dlg::OnBnClickedMoveUp()
{// TODO:  在此添加控件通知处理程序代码int nSelIndex = m_MyListCtrl.GetSelectionMark();if (nSelIndex <= 0){return;}//将文本值与扩展数据交换int nPrevIndex = nSelIndex - 1;CString strPrevText = m_MyListCtrl.GetItemText(nPrevIndex, 0);m_MyListCtrl.SetItemText(nPrevIndex, 0, m_MyListCtrl.GetItemText(nSelIndex, 0));m_MyListCtrl.SetItemText(nSelIndex, 0, strPrevText);DWORD_PTR dwPrevItemData = m_MyListCtrl.GetItemData(nPrevIndex);m_MyListCtrl.SetItemData(nPrevIndex, m_MyListCtrl.GetItemData(nSelIndex));m_MyListCtrl.SetItemData(nSelIndex, dwPrevItemData);//设置当前行为高亮m_MyListCtrl.SetSelectionMark(nPrevIndex);m_MyListCtrl.SetItemState(nPrevIndex, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);m_MyListCtrl.SetFocus();
}void CMFCApplication3Dlg::OnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);// TODO:  在此添加控件通知处理程序代码TRACE3("nItem:%d, nNewState:%u, nOldState:%u\n",pNMLV->iItem, pNMLV->uNewState, pNMLV->uOldState);if (pNMLV->uNewState & LVIS_SELECTED){if (pNMLV->iItem == 0){m_btnMoveDown.EnableWindow(TRUE);m_btnMoveUp.EnableWindow(FALSE);}else if (pNMLV->iItem == m_MyListCtrl.GetItemCount() - 1){m_btnMoveDown.EnableWindow(FALSE);m_btnMoveUp.EnableWindow(TRUE);}}*pResult = 0;
}

3. 运行截图

在这里插入图片描述

这篇关于CListCtrl中高亮插入行,条目上移下移的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860049

相关文章

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经

MongoDB学习—(4)文档的插入,删除与更新

一,文档的插入 插入命令有两个一个为insert,另一个为save,两者的区别为 db.[documentName].insert({..})插入的数据不允许重复,即_id不可相同 db.[docuemntName].save({..})插入的数据允许重复,如果整条数据内容相同,则不发生替换,如果数据有做不同,则将原数据替换 二,删除文档数据 db.[docuementName].r

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code = """<iframe srcdoc='<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>My static Spa

java的Timestamp时间插入mysql的datetime字段是0000-00-00 00:00:00

Mysql 与 java 的时间类型             MySql的时间类型有              Java 中与之对应的时间类型                  date                                               java.sql.Date               Datetime

Hibernate插入数据时,报错:org.springframework.dao.DataIntegrityViolationException: could not insert: [cn.itc

在用junit测试:插入数据时,报一下错误: 错误原因: package junit;import org.junit.Test;import cn.itcast.crm.container.ServiceProvinder;import cn.itcast.crm.dao.ISysUserDao;import cn.itcast.crm.domain.SysRole;

二分插入

思想:对于已排好序的数组,例如升序数组插入一个数字,把数组的上、下界下标做形参,方便递归,每次取中间的数与插入数进行比较,      特别注意当插入数小于中间数这种情况,这种情况下,移动时下标应从中间值那个下标开始移起(就因为这儿我Wrong了好多次) 解题代码: #include <stdio.h> #define N 100000 void Input(int a[

企业网银登录提示请确认您已插入工商银行U盾证书的解决方法

昨天受人之托帮小企业财务解决上网银的问题 因为不是专业做这个的,所以只能安装“常识”行事,但结果实在是令人意想不到。 排错的步骤: 同一台电脑上尝试不同浏览器,发现360浏览器的接受度相当普遍;给U盾换不同的连接线;在不同的电脑上安装银行的插件,再重复上面的步骤1和步骤2;最终的结果,在一台电脑上可以走到下一步,但时好时坏,无法解决问题;到知乎上找答案,在一篇说明里有提到定制的qq浏览器,最后

如何在Word中插入表格并进行高级格式化:冒号对齐、添加下划线并分栏

如何在Word中插入表格并进行高级格式化:详细教程 在Word中,表格是一个非常常用的工具,能够帮助我们更好地组织和展示信息。除此之外,本文还将深入探讨如何实现冒号对齐、添加专业的下划线以及隐藏表格线等高级技巧。通过这些技巧,能让你的文档更具美观性与专业性。 第一步:在Word页面上插入表格(大小为6行、2列) 插入表格 打开Word文档,将光标定位到想要插入表格的位置。点击菜单栏中的

【YashanDB知识库】表数据量不多,lob数据段有大量空间,插入数据报错

问题现象 clob段异常增长,导致磁盘空间满,应用无法使用数据库。 问题风险及影响 lob段空间未复用,lob段空间扩张很大,影响磁盘占用合理分配。 空间不够,插入报错,影响业务。 问题影响的版本 所有版本 问题发生原因 lob类型删除后,空间不会立即复用,需要等待UNDO_RETENTION时间后,空间才会复用。 普通的数据类型表空间段,普通数据被删后插入到undo空间,删除后