当前位置: 首页 > news >正文

【MFC】编辑框、下拉框、列表控件

目录

编辑框

设置换行

设置垂直滚动条 

获取/设置文本

下拉框

添加选项 

设置选项不排序 

设置默认选中项 

获取选中索引位置和对应文本

列表

​编辑

插入表头

插入正文

设置列表控件其他属性

设置整行选中、列之间的分隔符


编辑框

我们可以通过对话框窗口拖拽一个编辑框,如下:

设置换行

MFC中编辑框默认是单行的,也就是说不管内容的长度是多少,默认显示为一行,在这种情况下我们按回车也是没有用的。

此时同时设置编辑框的两个属性

  1. "want return":为true让编辑框接受回车
  2. "multiline":允许编辑框显示内容为多行

如下图所示,不过示例中因为作了汉化,属性名称为中文

设置垂直滚动条 

如下,将auto HScroll属性设置为true,垂直滚动属性是增加显式滚动条,方便我们拖拽

如果不设置auto HScroll属性,编辑框的内容换行到达编辑框的的高度上限时,将无法正常继续换行。

获取/设置文本

首先绘制一个demo界面,如下,蓝字为对应控件的控件id

将按钮绑定对应的点击响应事件

void CMFCApplication1Dlg::OnBnClickedBtnCopy()
{CString csText;GetDlgItem(IDC_EDT_SRC)->GetWindowTextW(csText);GetDlgItem(IDC_EDIT_DEST)->SetWindowTextW(csText);
}

随后便可实现复制的效果,这里主要使用两个方法:

int GetWindowTextW(HWND hWnd,        // 窗口句柄LPWSTR lpString,  // 接收文本的缓冲区int nMaxCount     // 缓冲区最大字符数
);BOOL SetWindowTextW(HWND hWnd,           // 窗口句柄LPCWSTR lpString     // 要设置的文本
);

 

下拉框

在进行下面操作前,需要先绑定变量

添加选项 

在OnInitDialog()对话框初始化函数通过AddString的方法

	m_cmbTest.AddString(L"选项1");m_cmbTest.AddString(L"选项2");m_cmbTest.AddString(L"选项3");

效果如下:

设置选项不排序 

mfc中下拉框选项默认是排序的,不是按照添加的顺序,这里有两种方法:

第一种是通过界面,设置下拉框的sort属性,比较直接一点

第二种是通过ModifyStyle方法移除属性

如下是ModifyStyle方法的参数

BOOL ModifyStyle(DWORD dwRemove,     // 要移除的样式DWORD dwAdd,        // 要添加的样式UINT nFlags = 0     // 重绘标志(可选)
);

 移除掉CBS_SORT属性

	m_cmbTest.ModifyStyle(CBS_SORT, 0);

同理,下拉框常见的属性如下:

  • CBS_DROPDOWN : 标准下拉框,有编辑框和下拉列表
  • CBS_DROPDOWNLIST : 只读下拉框,只能选择不能编辑
  • CBS_SIMPLE : 简单组合框,编辑框和列表框同时显示
  • CBS_SORT : 自动按字母顺序排序选项(创建后无法修改)

设置默认选中项 

在OnInitDialog()对话框初始化函数通过SetCurSel的方法,这里是通过选项下标来设置的

	m_cmbTest.SetCurSel(1);

效果如下: 

获取选中索引位置和对应文本

这里新增一个按钮,在其点击事件中弹出选中项文本

void CMFCApplication1Dlg::OnBnClickedButton2(){int nPos = m_cmbTest.GetCurSel();CString csText;m_cmbTest.GetLBText(nPos, csText);MessageBox(csText);
}

效果如下: 

列表

在进行下面操作前,同样先将列表控件绑定变量

插入表头

mfc中,要给列表控件添加表头,使用如下方法:

int InsertColumn(int nCol,           // 列索引(从0开始)LPCTSTR lpszColumnHeading,  // 列标题文本int nFormat = LVCFMT_LEFT,  // 对齐方式int nWidth = -1,    // 列宽度int nSubItem = -1   // 子项索引
);

在添加表头之前, 需要先将列表控件设置为 详细信息视图 (也叫报表视图),这样表头才能正常显示

	m_list.SetView(LV_VIEW_DETAILS); //将列表控件设置为 详细信息视图 (也叫报表视图)m_list.InsertColumn(0, L"编号", LVCFMT_CENTER, 100);m_list.InsertColumn(1, L"姓名", LVCFMT_CENTER, 100);m_list.InsertColumn(2, L"年龄", LVCFMT_CENTER, 100);

效果如下: 

插入正文

在插入正文的时候,表头是不算入正文的,因此列表的正文索引还是从0开始。

插入的时候,先插入新行,在插入其他列的内容。

// 插入新行
int nItem = m_list.InsertItem(行索引, L"第一列内容");// 设置其他列的内容
m_list.SetItemText(nItem, 列索引, L"列内容");

如下代码: 

	int nItem = m_list.InsertItem(0, L"001");m_list.SetItemText(nItem, 1, L"张三");m_list.SetItemText(nItem, 2, L"25");

效果如下:

注意:当插入新的列的时候,索引如果超出表头最大索引,则不显示 。

设置列表控件其他属性

1、选择模式

// 单选(默认)
LBS_NOSEL          // 不允许选择
LBS_MULTIPLESEL    // 多选模式
LBS_EXTENDEDSEL    // 扩展选择模式(Ctrl+点击,Shift+点击)

2、排序与显示

LBS_SORT           // 自动排序
LBS_HASSTRINGS     // 包含字符串(默认)
LBS_OWNERDRAWFIXED // 自绘固定高度项目
LBS_OWNERDRAWVARIABLE // 自绘可变高度项目

3、滚动条

LBS_DISABLENOSCROLL    // 禁用时显示滚动条
LBS_NOINTEGRALHEIGHT   // 允许部分显示项目
LBS_WANTKEYBOARDINPUT  // 接收键盘输入消息

4、显示效果

LBS_MULTICOLUMN    // 多列显示
LBS_USETABSTOPS    // 使用制表符
LBS_NOTIFY         // 发送通知消息给父窗口

设置整行选中、列之间的分隔符

  •  LVS_EX_FULLROWSELECT:整行选中
  • LVS_EX_GRIDLINES:设置网格
	m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

效果如下: 

相关文章:

  • 位运算详解之异或运算的奇妙操作
  • org.springframework.cloud.openfeign 组件解释
  • Spring Framework 执行链路设计
  • 大模型笔记1:大致了解大模型
  • MLLM常见概念通俗解析(五)
  • 【Redis】Redis的启航之路:Ubantu操作系统下安装Redis
  • ABP vNext 多语言与本地化:动态切换、资源继承与热更新
  • 微信小程序使用图片实现红包雨功能
  • error:MISCONF Redis is configured to save RDB snapshots
  • 计算机网络-自顶向下—第五章数据链路层重点复习笔记
  • 《高并发系统性能优化三板斧:缓存 + 异步 + 限流》
  • Nginx+keepalived主从,双主架构
  • git-build-package 工具代码详细解读
  • Git常用命令摘要
  • 青少年编程与数学 01-011 系统软件简介 19 SSMS 数据库管理工具
  • 【AS32系列MCU调试教程】性能优化:Eclipse环境下AS32芯片调试效率提升
  • Java 与 MySQL 性能优化:Linux服务器上MySQL性能指标解读与监控方法
  • Spring MVC 中日期格式转换的两种实用方法
  • ​​实时人脸检测与人脸关键点识别系统实现
  • 简历模板3——数据挖掘工程师5年经验
  • 假发的出口做b2c网站/西安seo全网营销
  • 兼职网站做任务/网络营销师报名入口
  • 龙泉市住房和城乡建设局网站/网络营销策划方案模板范文
  • 像网站的ppt怎么做/地推团队联系方式
  • 网站关键词优化怎么做/汽车营销策划方案ppt
  • 德州建设信息网站/西安seo关键词查询