MFC ListControl使用总结 设置背景,双击修改值
前言
现需要使用一个8*5的表格输入参数。
添加控件
如下图所示,使用了一个List control(ID: IDC_LIST_PARAM),一个Edit control(ID: IDC_EDIT_PARAM, 属性中visible改为false)以及一个static text.
其中List control用来显示表格,Edit control用来辅助编辑List control中的内容。
为控件添加变量及事件处理程序
为List control添加control类型变量m_paramList,添加NM_DBLCLK处理程序(相应双击事件)。
为Edit control添加control类型变量m_paramEdit,添加EN_KILLFOCUS处理程序。
代码部分
在对应窗口类添加私有成员。
private:// 参数输入窗口双击后获得的横纵坐标int m_Row;int m_Col;
在窗口类源文件添加代码,我的窗口类名为CImageSimDlg。
//双击更改某一项的值
//双击获取所选编辑框的横纵坐标,将一个edit控件移动到此处进行输入
//通过后续的OnEnKillfocusEditParam()传递函数并处理
void CImageSimDlg::OnNMDblclkListParam(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<NMITEMACTIVATE*>(pNMHDR);// TODO: 在此添加控件通知处理程序代码*pResult = 0;NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;CRect rc;m_Row = pNMListView->iItem;//获得选中的行m_Col = pNMListView->iSubItem;//获得选中列int n = m_paramList.GetItemCount();//获取当前一共多少行if (pNMListView->iSubItem < 7) //如果选择的是子项;{m_paramList.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);//获得子项的RECT;m_paramEdit.SetParent(&m_paramList);//转换坐标为列表框中的坐标m_paramEdit.MoveWindow(rc);//移动Edit到RECT坐在的位置;m_paramEdit.SetWindowText(m_paramList.GetItemText(m_Row, m_Col));//将该子项中的值放在Edit控件中;m_paramEdit.ShowWindow(SW_SHOW);//显示Edit控件;m_paramEdit.SetFocus();//设置Edit焦点m_paramEdit.ShowCaret();//显示光标m_paramEdit.SetSel(-1);//将光标移动到最后if (m_Row == n - 1){m_paramList.InsertItem(m_Row + 1, _T(""));}}*pResult = 0;
}void CImageSimDlg::OnEnKillfocusEditParam()
{// TODO: 在此添加控件通知处理程序代码CString tem;m_paramEdit.GetWindowText(tem); //得到用户输入的新的内容m_paramList.SetItemText(m_Row, m_Col, tem); //设置编辑框的新内容m_paramEdit.ShowWindow(SW_HIDE); //应藏编辑框
}// 输入参数List初始化函数
void CImageSimDlg::InitListParam()
{// 创建一个空的图标,目的是简单的控制行高度CImageList imagelist_Dis;imagelist_Dis.Create(1, 24, ILC_COLOR, 1, 1); m_paramList.SetImageList(&imagelist_Dis, LVSIL_SMALL);// 修改风格和扩展风格LONG lStyle_Dis = GetWindowLong(m_paramList.m_hWnd, GWL_STYLE); // 获取当前窗口风格lStyle_Dis &= ~LVS_TYPEMASK; // 清除显示方式位 lStyle_Dis |= LVS_REPORT; // 设置报表风格SetWindowLong(m_paramList.m_hWnd, GWL_STYLE, lStyle_Dis); // 设置窗口风格DWORD dwStyle_Dis = m_paramList.GetExtendedStyle();// 选中某行使整行高亮(只适用于报表风格的listctrl)dwStyle_Dis |= LVS_EX_FULLROWSELECT;dwStyle_Dis |= LVS_EX_GRIDLINES; // 网格线(只适用与报表风格的listctrl)dwStyle_Dis |= LVS_EX_FLATSB;dwStyle_Dis |= LVS_EX_DOUBLEBUFFER;m_paramList.SetExtendedStyle(dwStyle_Dis); // 设置扩展风格m_paramList.SetBkColor(RGB(166, 202, 240)); // 设置背景颜色m_paramList.SetTextBkColor(RGB(166, 202, 240)); // 设置文本背景颜色m_paramList.SetTextColor(RGB(0, 0, 0)); // 设置文本颜色// 设备信息参数表建立LV_COLUMN col_Dis;col_Dis.mask = LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;col_Dis.fmt = LVCFMT_CENTER;col_Dis.iSubItem = 0;col_Dis.pszText = _T("数据类型");col_Dis.cx = 60;m_paramList.InsertColumn(0, &col_Dis);// 每列宽度int colLen[5] = {100, 100, 100, 100, 100};m_paramList.InsertColumn(1, _T("数据个数/行"), LVCFMT_CENTER, colLen[0]);m_paramList.InsertColumn(2, _T("行数"), LVCFMT_CENTER, colLen[1]);m_paramList.InsertColumn(3, _T("行空闲数"), LVCFMT_CENTER, colLen[2]);m_paramList.InsertColumn(4, _T("帧空闲"), LVCFMT_CENTER, colLen[3]);m_paramList.InsertColumn(5, _T("图像个数"), LVCFMT_CENTER, colLen[4]);// 插入行CString Line;for(int i=1;i<=10;i++){Line.Format(_T("%d"), i);m_paramList.InsertItem(i, Line, 0);}
}
InitListParam函数在窗口初始化时调用。最后效果如下:
MFC ListControl使用总结 设置背景,双击修改值相关推荐
- MFC学习之 对话框设置背景颜色及控件透明的方法
对话框设置背景色之后控件不透明的问题. 1.对话框设置背景色: 方法1:(用OnPaint()) 在Dlg.h中:声明 afx_msg void OnPaint(); HICON m_hIcon; 在 ...
- MFC开发IM-自绘按钮控件,给按钮设置背景图片
MFC 基础知识:对话框背景添加图片和按钮Button添加图片 很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回 ...
- MFC/WTL 设置背景图和控件透明的方法
1.MFC 对话框设置背景图 方法一: 1>资源中导入一张bitmap图,如命名为 IDB_BITMAP1 2>对话框中添加一个 Picture Control,属性设置 Type 改为B ...
- MFC设置背景图片之三(使用GDI+)
前言 前面提及到两种方法可以设置MFC背景图片,操作由简到难,当然了他们的适用情况及功能性也是由简到繁的,这次使用的方法基本能满足任何功能需求,使用GDI+加载的背景图片可随窗口大小缩放 添加头文件 ...
- c语言窗口如何加背景图片,MFC积累---关于设置背景图片、背景颜色插入背景音乐...
第二种方法是把声音文件加入到资源中,然后从资源中播放声音.Visual C++支持WAVE型资源,用户在资源视图中单击鼠标右键并选择Import命令,然后在文件选择对话框中选择The Microsof ...
- android取消背景图片,android 设置背景图片
>**无背景的代码稍显枯燥啊少年: vs2015,vs2019等 再拓展里下载:** ! import java.awt.FlowLayout; import javax.swing.Image ...
- html给按钮设置背景,设置按钮背景图片(HTML-CSS)
很多人提交表单时都喜欢用一个图片来作为提交按钮,大多数人可能用JS去操作表单的提交,即当用户点击这个图片时响应一个JS来提交表单.其实还有一种方法,就是直接设置SUBMIT按钮的图片背景.设置它的图片 ...
- setStyleSheet 设置背景图片
设置背景图像有一个小坑,设置背景图像主要有两种情况, 第一种:图片的绝对路径 this->setObjectName("mainWindow");this->setSt ...
- Visual Studio设置背景图片
今天听了公司的一个经验分享会,发现VS竟然可以设置背景图片!还是个萌妹子!!被萌了一脸鼻血!!! 设置方法很简单:安装扩展ClaudiaIDE 1.在这里下载扩展,https://visualstud ...
最新文章
- 使用vim打造自己的python编辑器
- vscode配置C/C++ windows编译环境。
- 蒟蒻JZZ的犯错汇总
- Oracle中的date与timestamp
- 作业五—个人项目-小学四则运算 “软件”之升级版1
- 【Python基础】Pandas批量合并文件脚本,多个同名sheet也适用
- 4.Nginx配置进阶(四)
- java 实现动画_java编程加载窗口,实现动画
- java实现线程的方式_java多线程实现的四种方式
- Python paho-mqtt消息队列
- 准备-上机考试-华为
- Windows下Redis的启动命令
- java dubbo swagger_Dubbo 的 Swagger 服务文档 swagger-dubbo
- JavaSE 简单介绍
- python 循环语句s =2+22+222+2222之和_python基础2
- Flash C++编译器
- 淘宝用户分析(步骤详细,数据分析项目)
- 拉普拉斯变换和Z变换
- 联想微型计算机安装Win7,联想c340如何安装win7_联想c430一体机改win7系统步骤
- canvas_requestAnimationFrame帧率显示fps
热门文章
- OpenGL中的曲面细分和几何着色器
- 【 D3.js 进阶系列 】 进阶总结
- FDTD Solutions-平面波和全场散射场TFSF光源的区别
- VASP+phonopy计算声子群速与数据导出
- PM和PMO到底有什么区别?如何提升组织效能?
- 圣诞树(用HTML制作,绝对漂亮)
- 因勒索软件攻击,数据被加密:IT主管和工程师被开除,并要求赔偿 21.5 万元...
- win10 + Anaconda3(python 3.7) + CPU版TensorFlow
- Linux检查4k对齐,linux查看硬盘4K对齐方法
- Spark工作原理入门