MFC 的List Control控件实现可编辑
亲测可用,如果出现问题,请留言
所谓List Contro l,就是用来做LIist的,至于编辑,估计MS也没提供这个功能。比较诡异的是在给List Control 设置属性的时候居然看到Edit Label ,处于好奇点了点,发现只能修改第一列,改了之后失去焦点又变 回原来的文本。没有深入试下去,我估计可以修改第一列的数据。
其实要实现编辑功能,只要做一个Edit Control 就可以了,当需要编辑的时候,把这个Edit Control 动态显示到需要显示的地方。看效果图:
双击输入框:
输入完成,点击空白处:
列表的所选属性如下:
另外需要为控件绑定一个控件变量,此处控件变量名为m_List。相添加完成后,可以看到在头文件中自动添加了如下代码。
CListCtrl m_List;
另外,在CPP文件中也会自动添加部分代码,此处就不在做演示工作了。
然后,添加响应List Control的双击事件:
注意,在相关的头文件中需要先添加如下成员变量:
CEdit editItem;int hitRow;int hitCol;
void CDlgCourseInfoModify::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码*pResult = 0;LVHITTESTINFO info;info.pt = pNMItemActivate->ptAction;if (m_List.SubItemHitTest(&info) != -1){hitRow = info.iItem;hitCol = info.iSubItem;if (editItem.m_hWnd == NULL){RECT rect;rect.left = 3;rect.top = 3;rect.bottom = 3;rect.right = 3;editItem.Create(WS_CHILD | ES_LEFT | WS_BORDER | ES_AUTOHSCROLL | ES_WANTRETURN | ES_MULTILINE, rect, this, 101);editItem.SetFont(this->GetFont(), FALSE);}CRect rect;m_List.GetSubItemRect(info.iItem, info.iSubItem, LVIR_BOUNDS, rect);rect.top += 12;rect.left += 13;rect.right += 13;rect.bottom += 12;editItem.SetWindowText(m_List.GetItemText(info.iItem, info.iSubItem));editItem.MoveWindow(&rect, TRUE);editItem.ShowWindow(TRUE);editItem.SetFocus();}
}
在这个代码里面先得到鼠标双击的位置,判断是否击中了单元格,击中就调用Edit Control ,大小就是选中的单元 格,至于为什么rect要+12啊+13什么的,那是因为他出来的输入框跟单元格没对齐,导致很丑,这里可以根据自己的界面进行调整。最后再给这个Edit Control 一 个焦点,就可以直接输入了。
另外,为了能使输入之后有所反应,我们还要做一个鼠标的单击事件响应函数。
void CDlgCourseInfoModify::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO: 在此添加控件通知处理程序代码*pResult = 0; if (editItem.m_hWnd != NULL){editItem.ShowWindow(0);if (hitRow != -1){CString text;editItem.GetWindowText(text);m_List.SetItemText(hitRow, hitCol, text);}}hitCol = hitRow = -1;
}
MFC 的List Control控件实现可编辑相关推荐
- MFC中Tab Control控件的使用
一.创建TabControl控件主要分为以下步骤 1.1将TabControl控件拖入基本对话框中,并且创建一个控件变量m_tab 1.2创建两个子对话框,ID分别改为IDD_DIALOG_PAGE1 ...
- (MFC)list control控件 得到某行某列的字符串内容
转载 百度知道 点击打开链接
- MFC中使用TAB Control控件
2019独角兽企业重金招聘Python工程师标准>>> MFC中使用TAB Control控件 MFC中使用TAB Control控件(转) 假如我现在有个SDI程序,View是Fo ...
- 【MFC】动态加载Picture Control控件中的图片
[MFC]动态加载Picture Control控件中的图片 前言 方法1:CBrush 方法2:SetBitmap 参考链接 方法3:重写MyPictureControl 前言 在MFC窗体中,我们 ...
- C++ MFC picture control控件按比例显示任意图片文件(jpg、bmp等)
前段时间做大一专业实训,用MFC做一个图片查看类程序,对于从来没有学过C++的我们来说显示一张图片就是一件很难的事情了,作为小组里唯一一个MFC设计者,我从网上有很多关于MFC图片控件显示的文章,但大 ...
- MFC 对话框中的picture control 控件显示图片
MFC读取图片一般使用自定义的DIB文件.DIB文件集中了处理图片的API函数,这样可以方便我们的图像操作. DIB文件下载路径:DIB文件下载 MFC显示图片有几种方法: 1.在运行界面上选择 文件 ...
- MFC动态改变图形控件picture control位置
前言 有时候用pictrue控件显示图片的时候,如果设置图片大小适应控件大小可能不是很合理,但如果不设置,控件可能会便宜你摆放的原位置,这时候需要动态设置图形控件位置 正文 void CDlog4:: ...
- MFC-Tab Control控件使用
在MFC当中使用Tab Control控件切换不同的界面,使用起来会复杂一些,至少是比Qt中的Tab Widget复杂得多.我接下来会以一个MFC对话框应用程序为例子,说明Tab Control控件的 ...
- 在VC++中使用Tab Control控件
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...
- Tab Control控件的详细使用
1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置I ...
最新文章
- 秒懂晶振以及晶振电路 让你从“吃瓜群众”到“技术大牛”
- MYSQL 开启root远程登录权限
- Spring框架的事务管理及应用
- 如何使用Java与Mysql进行数据交互
- Junit单元测试学习笔记一
- HDU多校3 - 6975 Forgiving Matching(多项式匹配字符串)
- WPF绑定资源文件错误(error in binding resource string with a view in wpf)
- LeetCode 2166. 设计位集(Bitset)
- excel表格从某个标志计算机,让Excel也玩多标签 多个图表一个窗口 -电脑资料
- 【OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)
- 无聊特意去拍月亮。呵呵
- 《Node应用程序构建——使用MongoDB和Backbone》一2.3 事件
- OpenCV实现摄像机标定和像素转换,surf寻找特征点,FLANN匹配算子进行匹配
- windows 8授权概览
- Repast Simphony 模型发布及使用
- 2021 常用的 7 款 MySQL 客户端工具
- 如何在CAD中实现影像与矢量叠加套合(七参数法)
- D2 日报 2019年3月20日
- 【云和恩墨】内外兼修:Oracle ACED熊军谈Oracle学习
- S曲线C语言实现,利用robomodule+STM32F429+直流伺服电机进行简单验证