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

相关文章

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

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

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值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