当前位置: 首页 > 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,添加事件
    在这里插入图片描述
  • 这个时候只有选中项改变,就会触发该事件,我们可以在对应的事件函数中完成相关操作
    在这里插入图片描述
http://www.lryc.cn/news/38589.html

相关文章:

  • 13 node 程序后台执行加上 tail 命令, 中断 tail 命令, 同时也中断了 node 程序
  • 52癫痫发作预测的有效双自注意力残差网络
  • 【计算机网络】Tcp IP 面试题相关
  • 【MySQL】MySQL的存储引擎
  • es6动态模块import()
  • 【Flask】Jinja2模板(十四)
  • Mr. Cappuccino的第49杯咖啡——冒泡APP(升级版)之基于Docker部署Gitlab
  • 《机器学习》基础概念之【P问题】与【NP问题】
  • WinRAR安装教程
  • C++:vector和list的迭代器区别和常见迭代器失效问题
  • SpringSecurity如何实现前后端分离
  • 为ubuntu 18.04添加蓝牙驱动
  • Stable Diffusion Prompt用法
  • jenkins问题
  • 阅读笔记DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks
  • 01.Java的安装
  • 【C语言深度剖析】关键字(全)
  • English Learning - L2 语音作业打卡 双元音 [aʊ] [əʊ] Day15 2023.3.7 周二
  • 记第一次面试的过程(C++)
  • 06 电力电子仿真 MATLAB/Simulink
  • 搞懂面向对象这五大概念,才算真正跨过初学者到开发者的“分水岭“
  • 基于DelayQueue实现的延时队列
  • MATLAB实现层次分析法AHP及案例分析
  • Vue 3.0 TypeScript支持
  • STM8S系列基于IAR标准外设printf输出demo
  • PMP项目管理项目质量管理
  • 前缀和总结
  • 0109二分图-无向图-数据结构和算法(Java)
  • 计算机网络题库---选择题刷题训练(100多道精品)
  • 16、字符串生成器