MFC下拉框控件用法

news2024/9/30 5:30:50

目录

一、属性方式设置下拉框内容

1.Combo Box下拉框

2.Data属性

3.Type属性

4.Sort属性

二、初始化OnInitDialog设置下拉框内容

1.添加Combo Box下拉框变量

2.AddString方法添加选项

3.SetCurSel设置默认显示内容

4.InsertString方法插入内容 

4.DeleteString删除指定位置的内容

5. GetLBText索引内容MessageBox弹出

三、用代码监听事件

四、结语


一、属性方式设置下拉框内容

1.Combo Box下拉框

下拉框在工具箱里的名字是Combo Box,将其拖入界面中即可

2.Data属性

在Data中写入想要在下拉框中展示的选项,以英文状态下的分号";''分隔每一项

可乐;雪碧;柠檬水

运行后没有初始化的显示内容,下拉框的选项选中后可进行文字修改 

3.Type属性

默认的属性是Dropdown 可以对下拉框进行编辑的 ,把它修改成下来列表或者Drop List(2015以前的版本是Drop List)就不可以对下拉选项进行操作了

 

4.Sort属性

默认的Sort自动排序是按ASCLL码来编排的,就导致我们在Data里输入的是可乐;雪碧;柠檬水

而展示的却是   可乐;柠檬水;雪碧  

把默认排序关掉,改为false,即可按照输入的顺序来排列

二、初始化OnInitDialog设置下拉框内容

1.添加Combo Box下拉框变量

修改变量类别为控件Control类别(一般只有像编辑框类型的才用value值类型),变量名改为m_abx1,作用域改为private(私有权限)修改好后点 完成 创建成功

创建好的变量可在类视图——C文件名Dlg后缀的文件夹DataExchange里找到

m_cbx,刚刚创建好的下拉框的变量

value类型的变量之后用到的AddString方法都用不了

2.AddString方法添加选项

我们想让控件下拉框的内容选项不需要我们点击任何其他控件(比如button)的情况下就已经出现,就需要在初始化OnInitDialog中写入代码

OnInitDialog在类视图的Dlg后缀文件夹中

 

 在return true前添加额外的初始化代码

AddString方法 添加选项,添加的新选项会接在Data设置的选项之后

    // TODO: 在此添加额外的初始化代码
	//添加选项,添加的新选项会接在Data设置的选项之后
	//m_cbx.LoadStringW(TEXT("唐僧"));//value类型变量m_cbx,报错
	m_cbx1.AddString(TEXT("唐僧"));//控件类型变量m_cbx1
	m_cbx1.AddString(TEXT("孙悟空"));//控件类型变量m_cbx1
	m_cbx1.AddString(TEXT("猪八戒"));//控件类型变量m_cbx1
	m_cbx1.AddString(TEXT("沙僧"));//控件类型变量m_cbx1

3.SetCurSel设置默认显示内容

    //初始化下拉框中的默认显示内容
    m_cbx1.SetCurSel(1);//1的位置是雪碧,所以待会儿下拉框中默认显示的是雪碧
    //默认显示孙悟空的话,可乐 雪碧 柠檬水 唐僧 孙悟空 ... 0,1,2,3,4, 第四个是孙悟空
    m_cbx1.SetCurSel(4);//显示孙悟空

    //初始化下拉框中的默认显示内容
	m_cbx1.SetCurSel(1);//1的位置是雪碧,所以待会儿下拉框中默认显示的是雪碧
	//默认显示孙悟空的话,可乐 雪碧 柠檬水 唐僧 孙悟空 ... 0,1,2,3,4, 第四个是孙悟空
	m_cbx1.SetCurSel(4);//显示孙悟空
    //同时设置两个默认显示内容,后来的(4孙悟空)会覆盖掉原来的(1雪碧)

运行结果如下

4.InsertString方法插入内容 

    //插入内容
    m_cbx1.InsertString(4, TEXT("白龙马"));

    //4是孙悟空孙悟空所在位置,表示在唐僧位置之前插入白龙马这个选项

    //插入内容
	m_cbx1.InsertString(4, TEXT("白龙马"));
    //4是孙悟空孙悟空所在位置,表示在唐僧位置之前插入白龙马这个选项

运行结果

4.DeleteString删除指定位置的内容

    //删除指定位置的内容
	m_cbx1.DeleteString(7);//把沙僧所在位置7删掉
	m_cbx1.DeleteString(4);//把刚刚插入的白龙马删掉

    //删除指定位置的内容
    m_cbx1.DeleteString(7);//把沙僧所在位置7删掉
    m_cbx1.DeleteString(4);//把刚刚插入的白龙马删掉

运行结果

5. GetLBText索引内容MessageBox弹出

    //索引1号雪碧的内容并弹出
    CString str;//创建索引的变量
    m_cbx1.GetLBText(1, str);//传入所以内容的CString变量
    MessageBox(str);//弹出索引到的内容

	//索引1号雪碧的内容并弹出
	CString str;//创建索引的变量
	m_cbx1.GetLBText(1, str);//传入所以内容的CString变量
	MessageBox(str);//弹出索引到的内容

三、用代码监听事件

右键类视图中Dlg后缀文件找到属性,点开闪电图标,即为事件面板

添加OnCbnSelendcancelCombo事件

 为了不影响事件代码的运行需要把初始化中的索引并弹出代码注释掉

//实现的功能是选到哪个选项退出时就弹出哪个选项所在位置的内容

//比如选中柠檬水,就messagebox柠檬水(弹出内容)

//1.先获取到当前用户选中的内容的索引(位置)

// 2.创建一个CString类型变量作为当前索引位置的具体内容

CString str;

m_cbx1.GetLBText(index, str);

//3.弹出具体内容

MessageBox(str);

void CXiaLaKuangDlg::OnCbnSelendcancelCombo()
{
	// TODO: 在此添加控件通知处理程序代码
	//拿到索引位置
	int index=m_cbx1.GetCurSel();//int类型的返回值index接收到的就是当前位置的索引

	//获取索引位置的内容
	CString str;
	m_cbx1.GetLBText(index, str);//根据当前位置的索引index找到具体内容

	//弹出用户选中位置的具体内容
	MessageBox(str);

}

 

 而另外一个事件SeleChange控件中选定的内容已修改,则会随着用户的选择而即时弹出内容

void CXiaLaKuangDlg::OnCbnSelchangeCombo()
{
	// TODO: 在此添加控件通知处理程序代码
	int index = m_cbx1.GetCurSel();//int类型的返回值index接收到的就是当前位置的索引

    //获取索引位置的内容
	CString str;
	m_cbx1.GetLBText(index, str);

	//弹出用户选中位置的具体内容
	MessageBox(str);
}

void CXiaLaKuangDlg::OnCbnSelchangeCombo()//不用按退出(叉掉)也可以反馈当前用户选择的索引位置的具体内容
{
    // TODO: 在此添加控件通知处理程序代码
    int index = m_cbx1.GetCurSel();//int类型的返回值index接收到的就是当前位置的索引

    //获取索引位置的内容
    CString str;
    m_cbx1.GetLBText(index, str);

    //弹出用户选中位置的具体内容
    MessageBox(str);
}

四、结语

MFC的很多事件都是根据对应事件的因为来写的比如AddString,就是添加(Add)内容(String类型内容),把鼠标放在AddString后面会提示它的具体用法

SetCurSel,就是设置(set)当前(current)选择(selection)

是否有返回值也会提示,返回值类型啥的(比如GetCurSel的返回值是Int)

网上有MFC的帮助文档,有各种控件对应的函数,支持查找功能

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

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

相关文章

数据中心网络设计- 叶脊(Spine-Leaf)网络架构

大家好,我是技福的小咖老师。 随着业务形态的变化,数据中心网络的交换架构也在不断的发展。传统的三层网络结构应用广泛而且技术成熟,但随着技术的发展趋势,它的瓶颈也不断涌现,导致越来越多的网络工程师放弃这种结构…

[附源码]计算机毕业设计JAVA校园一卡通管理信息系统台

[附源码]计算机毕业设计JAVA校园一卡通管理信息系统台 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM…

C#上位机系列(5)—示波器二基础代码+线条绘制

本文是讲解C#.net平台的Winform框架下的第四个内容,手把手介绍上位机项目的创建方式以及一些写软件时常用的功能,讲解从零开始的每一个步骤。 接上一节的介绍,本次内容为上位机项目中示波功能代码的基本函数和画图功能。 目的是通过几行代码…

【联邦学习】联邦学习量化——non-iid数据集下的仿真

文章目录改进项目背景量化函数的改进non-iid数据集的设置Fedlab划分数据集的踩雷改进项目背景 在前面的项目中,虽然对联邦学习中,各个ue训练出来的模型上传的参数进行了量化,并仿真的相关结果。但是仍有一些俺不是非常符合场景的情况&#x…

《Hive性能调优实战》读书笔记

很不错的一本书。章节划分清晰明了,可根据个人需要读相应的章节。Hive各个方面的知识体系都有涉及。可作为工具书,常读常新,值得翻阅。 第2章 Hive问题排查与调优思路 优化方法 PL-SQL和T-SQL经验总结: 通过改写SQL&#xff0…

Hust计算机组成原理实验

文章目录logisim的使用1.添加门电路2.添加引脚3.添加导线4.添加文本5.测试电路补充工具实验一,运算器实验8位串行可控加减法器分析一位全加器八位串行加法器即可给出8位串行可控加减法器回答问题CLA74182(先行进位加法器)参数公式问题位快速加…

10个最常见的JavaScript问题

如今,JavaScript几乎是所有现代web应用程序的核心。这就是为什么JavaScript问题以及找出导致这些问题的错误是web开发人员的首要任务。 用于单页应用程序(SPA)开发、图形和动画以及服务器端JavaScript平台的强大的基于JavaScript的库和框架并…

opencv c++ 二值图像、阈值计算方法、全局阈值、自适应阈值

1、图像定义: 彩色图像 :三通道,像素值一般为0~255; 灰度图像:单通道,像素值一般为0~255; 二值图像:单通道,像素值一般为0(黑色)、255&#xff08…

Python计算器(包含机制转换)

实现思路: 要优先处理内层括号运算--外层括号运算--先乘除后加减的原则: 1、正则处理用户输入的字符串,然后对其进行判断,判断计算公式是否有括号,有就先将计算公式进行…

判断二叉树是否是平衡二叉树(c#)

问题描述 给定一棵二叉树,判断其是否为平衡二叉树。 示例 示例1 Input: root [3,9,20,null,null,15,7] Output: true 示例2 Input: root [1,2,2,3,3,null,null,4,4] Output: false 解决方案描述 二叉树的每个节点的左子节点和右子节点的高度差小于等于1&#x…

Windows和Linux混合系统通过AD域实现用户集中认证

一、Windows AD域 1、统一认证简介 管理的Linux服务器和Windows服务器如果很多,如果都用本地用户名管理,要管理和记住几十台甚至上百台服务器的不同账号不同密码,这是很难的。但是如果所有服务器账号密码都设置一样,那又完全没有安全性可言。 什么是服务器的集中认证(统…

数据结构(8)树形结构——B树、B+树(含完整建树过程)

目录 8.1.B树 8.1.1.概述 8.1.2.完整建树过程 8.2.B树 8.1.B树 8.1.1.概述 B树存在的意义: 二叉树在存储数据时可能出现向一边倾斜导致查询效率降低的情况,为了防止二叉树的倾斜,出现了平衡二叉树,通过旋转的方式保证二叉树…

[附源码]计算机毕业设计springboot校园商铺

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]Python计算机毕业设计Django基于web的羽毛球管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

学生HTML个人网页作业作品 HTML+CSS+JavaScript环保页面设计与实现制作

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

【PPT计时器】如何在wps演示PPT中使用定时器、计时器功能?不使用第三方插件,仅仅使用第三方计时器软件

一、问题背景和解决思路 很多人在展示PPT时,有精确的时间要求,比如五分钟,十分钟。 这时候,我们希望在演示的时候,PPT上附带一个小计时器、或者定时器。 网上有很多加定时器动画的教程,大多数停留在动画…

【D3.js】1.15-反转 SVG 元素

title: 【D3.js】1.15-反转 SVG 元素 date: 2022-12-02 14:07 tags: [JavaScript,CSS,HTML,D3.js,SVG] 文章目录一、学习目标二、题目三、通关代码参考更新svg坐标的y轴是在顶部的,即画出来的rect也是底朝上,如何让rect的底处于底部呢?一、学…

【C++初阶】STL-string的使用

文章目录一.string初识1.STL简介a.STL的组成b.STL和string的关系2.basic_string二.构造函数三.三种遍历方式四.容量相关的函数1.size()2.reserve()–调整容量3.resize()–调整size五.字符串的增删查改1.assign2.replace3.find()4.substr()5.insert()6.相关应用a.替换空格:b.取出…

【Redis-08】面试题之Redis数据结构与对象-RedisObject(上篇)

Redis本质上是一个数据结构服务器,使用C语言编写,是基于内存的一种数据结构存储系统,它可以用作数据库、缓存或者消息中间件。 我们经常使用的redis的数据结构有5种,分别是:string(字符串)、list(列表)、hash(哈希)、s…

string类的模拟实现

目录 一、浅拷贝、深拷贝 二、传统版本写法的String类 三、现代版本写法的String类 四、String类的模拟实现 一、浅拷贝、深拷贝 构造 //构造函数String(const char* str ""){if (nullptr str){assert(false);return;}_str new char[strlen(str) 1];strcpy(_s…