实现列表CListCtrl可点击编辑
双击list控件上某个单元,出现编辑框,编辑后可确认修改。
需要在代码中管理一个eidt,在双击时,在列表对应位置用eidt覆盖,确认或进行其他操作时,隐藏edit即可。
下面的代码是一个头文件,使用控件绑定。
使用时,随便找一个cpp里头写一下宏DECLARE_EditListCtlMESSAGE_MAP
将控件绑定的类型改成EditListCtl即可。
#pragma once
class ICListCtrlEditCallBack
{
public:
virtual void ListCtrlEditCallBack(CString txt)=0;
};
class CListCtrlEdit:public CEdit
{
ICListCtrlEditCallBack* m_pICListCtrlEditCallBack;
DECLARE_MESSAGE_MAP()
void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (nChar == VK_RETURN)
{
CString txt;
GetWindowText(txt);
m_pICListCtrlEditCallBack->ListCtrlEditCallBack(txt);
ShowWindow(SW_HIDE);
}
CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
}
public:
CListCtrlEdit(ICListCtrlEditCallBack* _pICListCtrlEditCallBack):m_pICListCtrlEditCallBack(_pICListCtrlEditCallBack){}
};
class EditListCtl:public CListCtrl,public ICListCtrlEditCallBack
{
int m_hitCol;
int m_hitRow;
CListCtrlEdit *m_pEdit;
DECLARE_MESSAGE_MAP()
public:
EditListCtl()
{
m_hitCol = 0;
m_hitRow = 0;
m_pEdit = NULL;
}
void OnNMDblclk(NMHDR *pNMHDR, LRESULT *pResult)
{
if (NULL == m_pEdit)
{
m_pEdit = new CListCtrlEdit(this);
m_pEdit->Create(WS_CHILD|ES_LEFT|WS_BORDER|ES_AUTOHSCROLL|ES_WANTRETURN|ES_MULTILINE,CRect(0,0,0,0),this,1);
}
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
LVHITTESTINFO info;
info.pt = pNMItemActivate->ptAction;
if (SubItemHitTest(&info) != -1)
{
m_hitRow = info.iItem;
m_hitCol = info.iSubItem;
CRect rect;
GetSubItemRect(m_hitRow,m_hitCol,LVIR_LABEL,rect);
m_pEdit->SetWindowText(GetItemText(m_hitRow,m_hitCol));
m_pEdit->MoveWindow(rect,TRUE);
m_pEdit->ShowWindow(SW_SHOW);
m_pEdit->SetFocus();
}
else
{
m_pEdit->ShowWindow(SW_HIDE);
}
*pResult = 0;
}
virtual void ListCtrlEditCallBack(CString txt)
{
SetItemText(m_hitRow,m_hitCol,txt);
}
};
#define DECLARE_EditListCtlMESSAGE_MAP \
BEGIN_MESSAGE_MAP(EditListCtl, CListCtrl)\
ON_NOTIFY_REFLECT(NM_DBLCLK, &EditListCtl::OnNMDblclk)\
END_MESSAGE_MAP()\
BEGIN_MESSAGE_MAP(CListCtrlEdit, CEdit)\
ON_WM_KEYDOWN()\
END_MESSAGE_MAP()
实现列表CListCtrl可点击编辑相关推荐
- phpcms列表页调用 点击量
很多朋友经常问Phpcms v9的首页.列表页.内容页点击量如何调用.现在就给大家分享phpcms V9如何分别在首页.列表页.内容页调用点击量代码: 1. Phpcms v9首页调用点击量 {pc: ...
- 页面中php传值后循环列表js获取点击的id
页面中php传值后循环列表js获取点击的id值进行js操作 <script type="text/javascript" src="__PUBLIC__/js/jq ...
- vue+element-ui 实现table单元格点击编辑,并且按上下左右键单元格之间切换
通过我的测试我发现两个两种方法来编辑单元格的内容 第一种点击编辑: 我是给td里添加一个input,将值赋值给input,当失去焦点的时候将input的值付给td原来的内容,然后将input删除, 代 ...
- 点击编辑table变为可编辑状态
简单描述:开发中遇到一个小困难,table展示的数据,需要是可编辑的,点击编辑按钮,页面table可以进行编辑,编辑完成后,点击保存数据就保留下来~~~ 思路:用一个带有input的表去替换不带inp ...
- iview 下拉select样式_iview的select组件的列表样式和点击都无效
iview的select组件用按需引入的方式加载这个组件之后列表样式和点击都无效,但是在main.js全局引入iview之后再用这个select组件又没有这个问题,main.js里面只引入了样式文件, ...
- JS点击编辑内容并保存
一个标签,点击按钮使内容变成可编辑状态,然后使用保存数据.这个是点击编辑按钮使得标签内容替换为文本域来实现的.
- 省市区联动,解决点击编辑赋值问题
HTML代码,这个很简单,就是三个seect标签,另外用bootstrap美化了一下. <div class="form-group"><label class= ...
- ListView中利用另一方法AdapterView.setOnItemClickListener来设置列表项的点击事件监听器
对比之间在自定义适配器中设置列表项点击事件监听器的方法, 这里说明第二种方法, 这种办法相对更好,更省内存资源 同是Miwok项目, 举个例子, 在NumbersActivity中可以用一种方法设置列 ...
- vue评论点赞列表点赞,点击哪个哪个状态改变
vue评论点赞列表点赞,点击哪个哪个状态改变 后台数据如下: { "body":{ "host":null, "code":200, &qu ...
- html编辑点击取消复原,vue点击编辑按钮,内容变成input可以修改,也可以删除
一.效果 图1 图2,点击报错之后,又变成图1的效果 二.使用到了element UI中的以下组件: 三.使用的关键点是vue中的v-if指令 四.关键代码如下 HTML部分 添加街道 编辑 保存 @ ...
最新文章
- 哪个工具编译java_用什么工具来编译JAVA啊?
- java httpinvoker漏洞_Java反序列化漏洞学习
- Python中*args和**kwargs
- linux man命令的1和1p,Linux中man命令的使用方法再解释
- ubuntu18.10下面从视频中提取音频
- python dataframe 列赋值_dataframe根据新列特征的条件为其赋值,给
- linux page cache 大小,Linux内核学习笔记(八)Page Cache与Page回写
- 【转载】完全手册 Flex 3.0 RIA开发详解(光盘内容)(书下载以及书的源代码下载)...
- No.2小白的HTML+CSS心得篇
- pytorch-sequencelabeling是一个支持softmax、crf、span等模型,注于序列标注(命名实体识别、词性标注、中文分词)的轻量级自然语言处理工具包,包含数据与实验
- vb.net 教程 2-13 Windows API 函数
- 主流的web前端开发及调试工具
- PTA-航空公司VIP客户查询
- STM32F103ZET6+IIC+SHT20温湿度传感
- win7休眠不断网的设置方法
- 学术文献也有身份证?
- html页面怎么适配拼接的大屏,大屏上的全屏页面的自适应适配方案
- Node.js文档和教程
- FPGA-RAM读写测试
- ajax(java)
热门文章
- Linux系统启动简单流程:
- int.Parse(),int.TryParse(),Convert.ToInt32(), (int)转换为数字类型方法简介
- 智能图形开发板SmartGLCD
- JavaWeb初级篇-HttpPost使用教程
- Spring Boot入门篇-@RequestParam/@RequestBody配置
- 程序员如何保护好自己的发际线
- sql两张表,分组或row_number()取最新的记录SQL
- Git用命令提交代码并合并
- PHP正则匹配html标签
- JNI用C加载JDK产生JVM虚拟机,并运行JAVA类main函数(MACOS/LINUX/WINDOWS)