前言

现需要使用一个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使用总结 设置背景,双击修改值相关推荐

  1. MFC学习之 对话框设置背景颜色及控件透明的方法

    对话框设置背景色之后控件不透明的问题. 1.对话框设置背景色: 方法1:(用OnPaint()) 在Dlg.h中:声明 afx_msg void OnPaint(); HICON m_hIcon; 在 ...

  2. MFC开发IM-自绘按钮控件,给按钮设置背景图片

    MFC 基础知识:对话框背景添加图片和按钮Button添加图片 很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回 ...

  3. MFC/WTL 设置背景图和控件透明的方法

    1.MFC 对话框设置背景图 方法一: 1>资源中导入一张bitmap图,如命名为 IDB_BITMAP1 2>对话框中添加一个 Picture Control,属性设置 Type 改为B ...

  4. MFC设置背景图片之三(使用GDI+)

    前言 前面提及到两种方法可以设置MFC背景图片,操作由简到难,当然了他们的适用情况及功能性也是由简到繁的,这次使用的方法基本能满足任何功能需求,使用GDI+加载的背景图片可随窗口大小缩放 添加头文件 ...

  5. c语言窗口如何加背景图片,MFC积累---关于设置背景图片、背景颜色插入背景音乐...

    第二种方法是把声音文件加入到资源中,然后从资源中播放声音.Visual C++支持WAVE型资源,用户在资源视图中单击鼠标右键并选择Import命令,然后在文件选择对话框中选择The Microsof ...

  6. android取消背景图片,android 设置背景图片

    >**无背景的代码稍显枯燥啊少年: vs2015,vs2019等 再拓展里下载:** ! import java.awt.FlowLayout; import javax.swing.Image ...

  7. html给按钮设置背景,设置按钮背景图片(HTML-CSS)

    很多人提交表单时都喜欢用一个图片来作为提交按钮,大多数人可能用JS去操作表单的提交,即当用户点击这个图片时响应一个JS来提交表单.其实还有一种方法,就是直接设置SUBMIT按钮的图片背景.设置它的图片 ...

  8. setStyleSheet 设置背景图片

    设置背景图像有一个小坑,设置背景图像主要有两种情况, 第一种:图片的绝对路径 this->setObjectName("mainWindow");this->setSt ...

  9. Visual Studio设置背景图片

    今天听了公司的一个经验分享会,发现VS竟然可以设置背景图片!还是个萌妹子!!被萌了一脸鼻血!!! 设置方法很简单:安装扩展ClaudiaIDE 1.在这里下载扩展,https://visualstud ...

最新文章

  1. 使用vim打造自己的python编辑器
  2. vscode配置C/C++ windows编译环境。
  3. 蒟蒻JZZ的犯错汇总
  4. Oracle中的date与timestamp
  5. 作业五—个人项目-小学四则运算 “软件”之升级版1
  6. 【Python基础】Pandas批量合并文件脚本,多个同名sheet也适用
  7. 4.Nginx配置进阶(四)
  8. java 实现动画_java编程加载窗口,实现动画
  9. java实现线程的方式_java多线程实现的四种方式
  10. Python paho-mqtt消息队列
  11. 准备-上机考试-华为
  12. Windows下Redis的启动命令
  13. java dubbo swagger_Dubbo 的 Swagger 服务文档 swagger-dubbo
  14. JavaSE 简单介绍
  15. python 循环语句s =2+22+222+2222之和_python基础2
  16. Flash C++编译器
  17. 淘宝用户分析(步骤详细,数据分析项目)
  18. 拉普拉斯变换和Z变换
  19. 联想微型计算机安装Win7,联想c340如何安装win7_联想c430一体机改win7系统步骤
  20. canvas_requestAnimationFrame帧率显示fps

热门文章

  1. OpenGL中的曲面细分和几何着色器
  2. 【 D3.js 进阶系列 】 进阶总结
  3. FDTD Solutions-平面波和全场散射场TFSF光源的区别
  4. VASP+phonopy计算声子群速与数据导出
  5. PM和PMO到底有什么区别?如何提升组织效能?
  6. 圣诞树(用HTML制作,绝对漂亮)
  7. 因勒索软件攻击,数据被加密:IT主管和工程师被开除,并要求赔偿 21.5 万元...
  8. win10 + Anaconda3(python 3.7) + CPU版TensorFlow
  9. Linux检查4k对齐,linux查看硬盘4K对齐方法
  10. Spark工作原理入门