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

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

简介

  • 本文章主要介绍下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,添加事件
    在这里插入图片描述
  • 这个时候只有选中项改变,就会触发该事件,我们可以在对应的事件函数中完成相关操作
    在这里插入图片描述

相关文章:

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

简介 本文章主要介绍下MFC常用控件的使用&#xff0c;包括静态文本框(Static Text)、编辑框(Edit Control)、下拉框(Combo Box)、列表控件(List Control)、树控件(Tree Control)的使用。 创建项目 我们选择 文件->新建->新建项目&#xff0c;选择MFC程序 选择基于对话…...

13 node 程序后台执行加上 tail 命令, 中断 tail 命令, 同时也中断了 node 程序

前言 呵呵 最近帮朋友解决问题[2022.09.08] 需要启动一个 node 程序, 然后 需要一个 startUp.sh 脚本 然后 反手写了一个过去, 按道理 来说 应该是 后台启动了对应的 node 程序, 然后将 标准输出, 错误输出 输出到 logs/nohup.log 日志文件中, 然后基于 tail 命令 来查看 …...

52癫痫发作预测的有效双自注意力残差网络

Effective dual self-attentional residual networks for epileptic seizure prediction 摘要 癫痫发作预测作为慢性脑疾病中最具挑战性的数据分析任务之一&#xff0c;引起了众多研究者的广泛关注。癫痫发作预测&#xff0c;可以在许多方面大大提高患者的生活质量&#xff0…...

【计算机网络】Tcp IP 面试题相关

互联网协议群&#xff08;TCP/IP&#xff09;&#xff1a;多路复用是怎么回事&#xff1f; 1.【问题】IPv4 和 IPv6 有什么区别&#xff1f; IPv4 是用 32 位描述 IP 地址&#xff0c;理论极限约在 40 亿 IP 地址&#xff1b; IPv6 是用 128 位描述 IP 地址&#xff0c;IPv6 可…...

【MySQL】MySQL的存储引擎

目录 概念 分类 操作 概念 数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查 询、更新和删除数据。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在 许多不同的数据库管理系统…...

es6动态模块import()

目录 一、语法说明 二、适用场合 三、注意点 四、示例代码 五、效果 一、语法说明 import命令会被 JavaScript 引擎静态分析&#xff0c;先于模块内的其他语句执行&#xff08;import命令叫做“连接” binding 其实更合适&#xff09;。 // 报错 if (x 2) {import MyMod…...

【Flask】Jinja2模板(十四)

Jinja2是一个单独的Python包&#xff0c;Flask依赖Jinja2&#xff0c;安装Flask时会自动安装Jinja2。Jinja2可以将数据和模板结合在一起生成动态文本。 一、引入 来看一个最简单的视图函数&#xff1a; app.route(/) def hello_world():return Hello World&#xff01; 这个…...

Mr. Cappuccino的第49杯咖啡——冒泡APP(升级版)之基于Docker部署Gitlab

冒泡APP&#xff08;升级版&#xff09;之基于Docker部署Gitlab基于Docker安装Gitlab登录Gitlab创建Git项目上传代码使用Git命令切换Git地址使用IDE更换Git地址基于Docker安装Gitlab 查看beginor/gitlab-ce镜像版本 下载指定版本的镜像 docker pull beginor/gitlab-ce:11.3.0…...

《机器学习》基础概念之【P问题】与【NP问题】

《机器学习》基础概念之【P问题】与【NP问题】 这里写目录标题《机器学习》基础概念之【P问题】与【NP问题】一、多项式&时间复杂度1.1. 多项式1.2.时间复杂度二、P问题 & NP问题2.1. P问题2.2.NP问题2.3.举例理解NP问题-TSP旅行商推销问题三、NP-hard问题&NP-C问题…...

WinRAR安装教程

文章目录WinRAR安装教程无广告1. 下载2. 安装3. 注册4. 去广告WinRAR安装教程无广告 1. 下载 国内官网&#xff1a;https://www.winrar.com.cn/ 2. 安装 双击&#xff0c;使用默认路径&#xff1a; 点击“安装”。 点击“确定”。 点击“完成”。 3. 注册 链接&#xff…...

C++:vector和list的迭代器区别和常见迭代器失效问题

迭代器常见问题的汇总vector迭代器和list迭代器的使用vector迭代器list迭代器vector迭代器失效问题list迭代器失效问题vector和list的区别vector迭代器和list迭代器的使用 学习C&#xff0c;使用迭代器和了解迭代器失效的原因是每个初学者都需要掌握的&#xff0c;接下来我们就…...

SpringSecurity如何实现前后端分离

前后端分离模式是指由前端控制页面路由&#xff0c;后端接口也不再返回html数据&#xff0c;而是直接返回业务数据&#xff0c;数据一般是JSON格式。Spring Security默认的表单登录方式&#xff0c;在未登录或登录成功时会发起页面重定向&#xff0c;在提交登录数据时&#xff…...

为ubuntu 18.04添加蓝牙驱动

目录背景方法背景 从网上买的能直接插ubuntu 1804的usb蓝牙太少了&#xff0c;而且还贵。我就直接从JD下单的一个便宜的USB蓝牙&#xff0c;结果插上机器没有驱动起不来。我的PC是个3年前的老机器&#xff0c;实在是不想升级系统&#xff0c;于是捣鼓半天捣鼓好了&#xff0c;…...

Stable Diffusion Prompt用法

Stable Diffusion可以根据你输入的提示词&#xff08;prompt&#xff09;来绘制出想象中的画面。 1、正向提示词&#xff08;Prompt&#xff09;&#xff1a; 提高图像质量的prompt: prompt用途HDR, UHD, 64K(HDR、UHD、4K、8K和64K)这样的质量词可以带来巨大的差异提升照片…...

jenkins问题

目录 python 不是内部或外部命令&#xff0c;也不是可运行的程序 ‘cmd’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 git 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 pywintypes.com_error: (-2147024891, ‘拒绝访问。’, None,…...

阅读笔记DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks

zi,t∈Rz_{i,t}\in \mathbb{R}zi,t​∈R表示时间序列iii在ttt时刻的值。给一个连续时间段t∈[1,T]t\in [1, T]t∈[1,T]&#xff0c;将其划分为context window[1,t0)[1,t_0)[1,t0​)和prediction window[t0,T][t_0,T][t0​,T]。用context window的时间序列预测prediction window…...

01.Java的安装

1.JDK&JREJDK : Java SE Development Kit--Java开发工具JRE : Java Runtime Environment--Java运行环境Java编程&#xff0c;需要安装JDK;如果仅仅是运行一款Java程序则只需要运行JREJava的安装包分为两类&#xff1a;一类是JRE--是一个独立的Java运行环境&#xff1b; 一类…...

【C语言深度剖析】关键字(全)

文章目录一.存储类型关键字前言补充1&#xff1a;内存思考&#xff1a;补充2&#xff1a;变量与内存的关系补充3&#xff1a;变量的分类补充4&#xff1a;存储类补充5&#xff1a;删除数据是怎么删除的&#xff1f;1.auto2.register3.static4.extern基本用法:基本功能5.typedef…...

English Learning - L2 语音作业打卡 双元音 [aʊ] [əʊ] Day15 2023.3.7 周二

English Learning - L2 语音作业打卡 双元音 [aʊ] [əʊ] Day15 2023.3.7 周二&#x1f48c;发音小贴士&#xff1a;&#x1f48c;当日目标音发音规则/技巧:&#x1f36d; Part 1【热身练习】&#x1f36d; Part2【练习内容】&#x1f36d;【练习感受】&#x1f353;元音 /eɪ…...

记第一次面试的过程(C++)

说实话三月份上旬过得很充实&#xff0c;而且感觉蛮值&#xff0c;但还有不足的地方&#xff0c;今晚特地看完资料分析来复盘复盘。 时间还要回到3.2中午13.35&#xff08;别问我为什么那么准确&#xff0c;刚刚掏手机看的&#xff09;&#xff0c;我正在吃着饭看着王者荣耀的直…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...