MFC常用控件使用(文本框、编辑框、下拉框、列表控件、树控件)

news2025/7/18 23:40:49

简介

  • 本文章主要介绍下MFC常用控件的使用,包括静态文本框(Static Text)、编辑框(Edit Control)、下拉框(Combo Box)、列表控件(List Control)、树控件(Tree Control)的使用。

创建项目

  • 我们选择 文件->新建->新建项目,选择MFC程序
    在这里插入图片描述
  • 选择基于对话框,点击完成。
    在这里插入图片描述
  • 创建完成后,我们选择左下角的资源视图。然后点击Dialog下的IDD_CSTATIC_DIALOG,就可以看到MFC自动创建好的对话框界面。
    在这里插入图片描述

静态文本框 Static Text

  • 我们点击左边的工具箱,有的可能在右边。选择Static Text,就会放置到界面上。我们点击输入文字,可以直接修改显示内容。
    在这里插入图片描述
  • 我们常用的功能可能是需要在代码中去获取和设置静态文本框的显示内容。点击静态文本框,属性,可以先修改下ID,便于我们区分
    在这里插入图片描述
  • 然后选择静态文本框,右击,选择添加变量。可以设置变量类型等信息。
    在这里插入图片描述
  • 然后选择类视图,可以在对话框初始化接口中,设置文本框的显示内容
    在这里插入图片描述
  • 运行效果
    在这里插入图片描述
  • 获取文本框显示内容。可直接使用如下代码
  •   CString str;
      m_textShow.GetWindowTextW(str);
    

编辑框 Edit Control

  • 选择工具箱,把Edit Control拖到界面上,运行后,我们可以直接在编辑框中输入内容
    在这里插入图片描述
  • 如果想要输入多行内容,右击控件选择属性,将Multiline和Want Return属性改为true,输入一行再回车,就可以输入多行内容。
    在这里插入图片描述
  • 默认垂直方向输入是有限的,我们将Auto VScroll改为true,垂直方向也可以一直输入。
  • 将Horizontal Scroll和Vertical Scroll改为true,可以给编辑框加上水平和垂直滚动条
    在这里插入图片描述
    在这里插入图片描述
  • 如果要在代码里设置和获取编辑框内容,选择编辑框,右击,添加变量
    在这里插入图片描述
  • 在对话框初始化函数中去设置和获取文本框内容
    在这里插入图片描述
  • 刚才添加变量时,类别选的是Control,我们也可以指选择Value,这时候变量类型有很多,可以选择一个字符串类型
    在这里插入图片描述
  • 在代码里设置和获取编辑框内容
  •   	//设置内容
      	m_editStr = TEXT("this is value MFC");
      
      	//将变量内容同步到控件中
      	UpdateData(FALSE);
    
      	//将控件内容同步到变量中
      	UpdateData(TRUE);
    
      	//获取内容
      	MessageBox(m_editStr);
    

下拉框 Combo Box

  • 在工具栏选择 Combo Box
    在这里插入图片描述
  • 右击控件选择属性,可以在Data属性中写入下拉框要显示的内容,中间用分号分隔
    在这里插入图片描述
    在这里插入图片描述
  • 默认是可以进行编辑的。如果不想编辑,可以将属性中的Type属性改为Drop List,有的这块显示的是中文,那可以选择下拉列表。这样下拉框就无法编辑了。
  • 下拉列表的显示项,默认是按ASCII码排序。如果不想让自动排序,就按我们输入的顺序显示,可以将属性Sort设置为False
  • 一般也都是在代码中添加显示内容,因此,先添加变量。
    在这里插入图片描述
  • 常用功能介绍
  •   	//添加显示内容
      	m_ComBoxText.AddString(TEXT("C++"));
      	m_ComBoxText.AddString(TEXT("JAVA"));
      	m_ComBoxText.AddString(TEXT("PYTHON"));
      	m_ComBoxText.AddString(TEXT("SHELL"));
    
      	//设置默认选项
      	m_ComBoxText.SetCurSel(0);
    
      	//插入
      	m_ComBoxText.InsertString(2, TEXT("PHP"));
    
      	//删除
      	m_ComBoxText.DeleteString(3);
    
      	//获取索引对应的值
      	CString comStr;
      	m_ComBoxText.GetLBText(1, comStr);
    
  • 还有个常用功能,就是我们选择下拉框中某一项时,要获取到选择的具体是哪一个
  • 选择控件属性,选择控件事件,选择CBN_SELCHANGE, 点击添加
    在这里插入图片描述
  • 就会自动生成一个事件函数,下拉框选择项改变时,就会触发该事件,可以在事件函数中获取当前选中的内容
    在这里插入图片描述

列表 List Control

  • 在工具栏中选择List Control控件,放到界面上。一般修改属性View为Report(报表模式)
    在这里插入图片描述
  • 添加一个变量
    在这里插入图片描述
  • 可以在初始化代码中设置数据和属性
  •   	CString strList[] = { TEXT("NAME"), TEXT("SEX"), TEXT("AGE") };
    
      	//设置表头
      	for (int i = 0; i < 3; i++) {
      		//参数1:索引; 参数2:显示内容; 参数3:对齐方式; 参数4:列宽
      		m_listControl.InsertColumn(i, strList[i], LVCFMT_LEFT, 100);
      	}
    
      	//设置数据
      	CString strNameList[] = { TEXT("tom"), TEXT("jack"), TEXT("mary") };
      	CString strSexList[] = { TEXT("boy"), TEXT("boy"), TEXT("girl") };
      	CString strAgeList[] = { TEXT("18"), TEXT("20"), TEXT("17") };
    
      	for (int i = 0; i < 3; i++) {
      		//插入姓名
      		m_listControl.InsertItem(i, strNameList[i]);
    
      		//插入性别和年龄
      		m_listControl.SetItemText(i, 1, strSexList[i]);
      		m_listControl.SetItemText(i, 2, strAgeList[i]);
      	}
    
      	//设置行选择和网格线
      	m_listControl.SetExtendedStyle(m_listControl.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    
  • 效果
    在这里插入图片描述

树控件 Tree Control

  • 在工具栏中选择Tree Control,拖拽到界面上
    在这里插入图片描述
  • 属性中可以设置 Has Lines为True,可以有线。设置Has Buttons为True,可以有折叠按钮。根节点之间要有线,可设置Lines At Root为True。
  • 设置完可以看下效果
    在这里插入图片描述
  • 添加变量,在代码中写逻辑
    在这里插入图片描述
  • 可以先在初始化接口中设置节点
    在这里插入图片描述
  •   	//设置节点
      	HTREEITEM root = m_treeControl.InsertItem(TEXT("ROOT"), 0, 0, NULL);
      	HTREEITEM parent = m_treeControl.InsertItem(TEXT("PARENT"), 1, 1, root);
      	HTREEITEM sub1 = m_treeControl.InsertItem(TEXT("SUB1"), 2, 2, parent);
      	HTREEITEM sub2 = m_treeControl.InsertItem(TEXT("SUB2"), 3, 3, parent);
      
      	//设置默认选项
      	m_treeControl.SelectItem(sub1);
    
  • 效果
    在这里插入图片描述
  • 常用的一个功能是我们需要知道选择的是哪一个。选择属性,在控件事件中选择TVN_SELCHANGE,添加事件
    在这里插入图片描述
  • 这个时候只有选中项改变,就会触发该事件,我们可以在对应的事件函数中完成相关操作
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/404785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树的三种遍历

二叉树的遍历可以有&#xff1a;先序遍历、中序遍历、后序遍历先序遍历&#xff1a;根、左子树&#xff0c;右子树中序遍历&#xff1a;左子树、根、右子树后序遍历&#xff1a;左子树、右子树、根下面是我画图理解三种遍历&#xff1a;二叉树里都是分为左子树和右子树。分治思…

Linux文件基础I/O

文件IO文件的常识基础IO为什么要学习操作系统的文件操作C语言对于函数接口的使用接口函数介绍如何理解文件文件描述符重定向更新给模拟实现的shell增加重定向功能为什么linux下一切皆文件&#xff1f;缓冲区为什么要有缓冲区缓冲区对应的刷新策略缓冲区的位置在哪里文件的常识 …

VSCode:添加SSH远程连接

有的时候我们的代码保存于远程服务器&#xff0c;通过VSCode可以通过SSH进行连接&#xff0c;完成远程的编辑。在VSCode的扩展中安装Remote - SSH点击左侧工具栏的远程资源管理器&#xff0c;然后点加号输入ssh的机器及用户名选择一个用于保存ssh配置文件的路径&#xff0c;默认…

Tabs Studio 5.3.0 多功能标签 Crack

在 Visual Studio 2022 和 SQL Server Management Studio 中轻松处理任意数量和类型的文档 你爱写代码&#xff0c;不会好好扫描文档找到你需要切换到的文件名&#xff0c;然后扫描文件菜单下拉列表&#xff0c;然后求助于解决方案资源管理器或搜索。只有在您需要切换到另一个…

javascript入门基础

目录 前言 引入&#xff1a;html中嵌入javascript有三种方式 0. 变量&#xff08;var、let&#xff09; 1. 函数 1.1 普通函数 和 箭头函数 1.1.2 普通函数中的this 1.1.3 箭头函数没有自己的this 1.1.4 普通函数有arguments方法&#xff0c;箭头函数没有 1.1.5 箭头函…

MS python学习(9)

开始学习第二辑 more python for beginners talking about formating https://learn.microsoft.com/en-us/shows/more-python-for-beginners/formatting-and-linting–more-python-for-beginners-2-of-20 Formating 代码格式化&#xff1a;使用pylint工具来帮助遵循PEP8(pyt…

conda创建一个地理开发环境

conda创建一个地理开发环境1. 环境内包说明2. 创建yml文件3. 创建地理开发环境使用conda安装包的时候&#xff0c;经常遇到包之间相互冲突。为了方便配置环境&#xff0c;测试了常用的地理开发所需要的各种包&#xff0c;生成了yml文件方便一键安装。 Linux下pip基本可以成功安…

手敲Mybatis(七)-细化xml语句解析和构建

前言为什么这一章节要细分之前的解析xml处理逻辑&#xff0c;原因是违反了单一原则设计&#xff0c;职责并不明确&#xff0c;将Sql语句、参数、返回值等等一切都进行解析&#xff0c;那么这种的需要拆开&#xff0c;为了后面可维护可扩展&#xff0c;例如Mapper级别的有mapper…

k8s client-go源码解析之informer三

Informer&#xff08;三&#xff09; 注意&#xff1a;本文内容为学习笔记&#xff0c;内容为个人见解&#xff0c;不保证准确性&#xff0c;但欢迎大家讨论何指教。 觉得文章不错请关注跟博客及github 本篇介绍DeltaFIFO及indexer。 informer大致工作流程如下&#xff1a; …

顺序表来喏!!!

前言&#xff1a;还记得前面的文章&#xff1a;《通讯录的实现》吗&#xff1f;通讯录的完成就借助了顺序表这种数据结构&#xff01;&#xff01;&#xff01;那么今天我们就来介绍我们的顺序表介绍顺序表前&#xff0c;我们来了解一下线性表的概念线性表&#xff1a;线性表&a…

mysql笔试题18道

部门表、员工表、薪水等级表 1.取得每个部门最高薪水人员名称 第一步&#xff1a;取得每个部门最高薪水作为临时表t select deptno,max(sal) as maxSal from emp group by deptno 第二步&#xff1a;临时表t与emp表连接条件 e.deptnot.deptno and e.salt.maxSal select …

Spring - Spring IoC 容器相关面试题总结

文章目录01. Spring IoC 和依赖注入是什么&#xff1f;02. Spring IoC 的优点和缺点分别是什么&#xff1f;03. Spring IoC 有什么作用和功能&#xff1f;04. Spring 依赖注入的方式&#xff1f;05. Spring 构造器注入和 setter 方法注入的区别&#xff1f;06. Spring 依赖注入…

嵌入式系统实验——【玄武F103开发板】按key1熄灭两个LED灯、松开恢复点亮

这里写目录标题一、任务目标&#xff08;一&#xff09;分析二、设计思路&#xff08;一&#xff09;开启KEY1对应的GPIOx时钟1.找到KEY1&#xff08;PE3&#xff09;所在的GPIOx端口2.开启GPIOE端口时钟3.清空PE3的端口位4.设置PE3的端口位为输出模式的上拉模式5.一个易错点&a…

二分——力扣篇

二分——力扣篇搜索旋转排序数组搜索旋转排序数组II寻找旋转排序数组中的最小值寻找旋转排序数组中的最小值II搜索旋转排序数组 定理一&#xff1a;只有在顺序区间内才可以通过区间两端的数值判断target是否在其中。 定理二&#xff1a;判断顺序区间还是乱序区间&#xff0c;只…

案例学习20之内存长期占用导致系统缓慢

前言&#xff1a; 发现问题&#xff0c;解决问题&#xff0c;是贯穿整个项目开发过程的事情&#xff0c;能够处理更多的问题&#xff0c;随着经验的丰富&#xff0c;提前预知更多的问题&#xff0c;让问题不出现是最好的解决问题方式。 问题背景&#xff1a; 项目运行过程中出现…

基于redis实现点赞数,点击数,排行榜

使用场景 对于某些视频或者文章有点赞数和点击数, 通过这些数据就可以进行排行榜的功能了 使用异步队列 redis的集合 A.php //点击数 $redis->zIncrBy(click.:.date(Ymd),1,$videoId); //点赞数 $redis->zIncrBy(love.:.$videoId,1,$$user); //获取当前video的播放数…

PMP项目管理项目范围管理

目录1 项目范围管理概述2 规划范围管理3 收集需求4 定义范围5 创建 WBS6 确认范围7 控制范围1 项目范围管理概述 项目范围管理包括确保项目做且只做所需的全部工作&#xff0c;以成功完成项目的各 个过程。管理项目范围主要在于定义和控制哪些工作应在项目内&#xff0c;哪些工…

界面原型设计

引用锤子科技视觉设计总监——罗子雄在重庆TEDx活动上说的一小段话: 每当我们看到一些美妙的设计的时候,很多人心里面会有一种冲动,这种冲动会让你们想去创造一些新的东西,创造一些美妙的事物。 我们常说用户体验用户体验,用户使用你的软件,第一个会接触的是什么?没错,…

读WiscKey: Separating Keys from Values in SSD-conscious Storage

在我看来本论文的主要贡献在于相对减轻了传统LSM compact所带来的写放大问题。其核心设计在于使key、value分离以及gc只保持有效数据 key、value分离 作者对于key、value分离策略的观察主要来自于排序是以往LSM性能消耗最大的地方&#xff0c;但是真正影响排序的与占用大储存…

推荐五款宝藏软件,身为宝藏男孩和宝藏女孩的你,不试一下吗?

今天带来五款宝藏软件&#xff0c;身为宝藏男孩和宝藏女孩的你们&#xff0c;不试一下吗&#xff1f; 1.EPUB阅读器——Starrea Starrea 是一款Windows平台的EPUB电子书阅读器&#xff0c;它虽然只支持一个平台&#xff0c;但是提供了很多额外的功能&#xff0c;其中包括 文…