COMBOX的基本使用

article/2025/9/23 15:46:49

COMBOX的基本使用

  (2015-07-21 23:10:27)
转载
标签: 

it

分类: MFC
组合框其实就是把一个 编辑框 和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。

       简易组合框中的列表框是一直显示的,效果如下图:

VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)

       下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框,列表框弹出后如下图:

VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)

       下拉列表式组合框的编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本。下拉列表式组合框如下图:

VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)

       经过上面的介绍,大家应该知道,最常用的当属下拉式组合框和下拉列表式组合框了,它们在很多时候能使程序看起来更专业,更简洁,让用户在进行选择操作时更方便。

       组合框被操作时会向父窗口发送通知消息,这些通知消息及其含义如下:

       CBN_CLOSEUP:组合框的列表框组件被关闭,简易组合框不会发送该通知消息
       CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息
       CBN_DROPDOWN:组合框的列表框组件下拉,简易式组合框不会发送该通知消息
       CBN_EDITUPDATE:在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息
       CBN_EDITCHANGE:编辑框的内容被用户改变了,与CBN_EDITUPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的,下拉列表式组合框不会发送该消息
       CBN_ERRSPACE:组合框无法申请足够的内存来容纳列表项
       CBN_SELENDCANCEL:表明用户的选择应该取消,当用户在列表框中选择了一项,然后又在组合框控件外单击鼠标时就会导致该消息的发送
       CBN_SELENDOK:用户选择了一项,然后按了回车键或单击了下滚箭头,该消息表明用户确认了自己所作的选择
       CBN_KILLFOCUS:组合框失去了输入焦点
       CBN_SELCHANGE:用户通过单击或移动箭头键改变了列表的选择
       CBN_SETFOCUS:组合框获得了输入焦点

CComboBox类的主要成员函数

      因 为组合框是由编辑框和列表框组合而成的,所以组合框的操作和编辑框与列表框的操作有很多相似之处,同样的,CComboBox类的成员函数也和CEdit 类与CListBox类的成员函数有很多相似之处,不但功能相似,甚至函数名和参数也很相似。鸡啄米下面大概讲解下CComboBox类的主要成员函数, 更详细的内容可以参见MSDN。

       int GetCount( ) const;
       获取组合框控件的列表框中列表项的数量。

       int GetCurSel( ) const;
       获取组合框控件的列表框中选中项的索引,如果没有选中任何项,该函数返回CB_ERR。

       int SetCurSel(int nSelect);
       在组合框控件的列表框中选择某项。nSelect参数指定了要选择的列表项的索引,如果为-1则列表框中当前选择项被取消选中,编辑框也被清空。

       DWORD GetEditSel( ) const;
       获取组合框控件的编辑框中当前选择范围的起始和终止字符的位置。该函数返回一个32位数,低16位存放起始位置,高16位存放选择范围后第一个非选择字符的位置。如果该函数用于下拉列表式组合框时,会返回CB_ERR。

       BOOL SetEditSel(int nStartChar,int nEndChar);
       用于在组合框控件的编辑框中选择字符。nStartChar参数指定起始位置,nEndChar参数指定终止位置。

       DWORD_PTR GetItemData(int nIndex) const;
       获取组合框中指定项所关联的32位数据。nIndex参数指定组合框控件的列表框某项的索引(从0开始)。

       int SetItemData(int nIndex,DWORD_PTR dwItemData);
       为某个指定的组合框列表项设置一个关联的32位数。nIndex参数指定要进行设置的列表项索引。dwItemData参数指定要关联的新值。

       void GetLBText(int nIndex,CString& rString) const;
       从组合框控件的列表框中获取某项的字符串。nIndex参数指定要获取字符串的列表项的索引,CString参数用于接收取到的字符串。

       int GetLBTextLen(int nIndex) const;
       获取组合框控件的列表框中某项的字符串长度。nIndex参数指定要获取字符串长度的列表项的索引。  

       int GetTopIndex( ) const;
       获取组合框控件的列表框中第一个可见项的索引。

       int SetTopIndex(int nIndex);
       将组合框控件的列表框中某个指定项设置为可见的。nIndex参数指定了该列表项的索引。该函数成功则返回0,有错误发生则返回CB_ERR。

       BOOL LimitText(int nMaxChars);
       用于限制用户在组合框控件的编辑框中能够输入的最大字节长度。nMaxChars参数指定了用户能够输入文字的最大字节长度,如果为0则长度被限制为65535个字节。

       int AddString(LPCTSTR lpszString);
       为组合框控件中的列表框添加新的列表项。lpszString参数是指向要添加的字符串的指针。该函数的返回值如果大于等于0,那么它就是新列表项的索 引,而如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。

       int DeleteString(UINT nIndex);
       删除组合框中某指定位置的列表项。nIndex参数指定了要删除的列表项的索引。该函数的返回值如果大于等于0,那么它就是组合框中剩余列表项的数量。如果nIndex指定的索引超出了列表项的数量则返回CB_ERR。

       int FindString(int nStartAfter,LPCTSTR lpszString) const;
       在 组合框控件的列表框中查找但不选中第一个包含指定前缀的列表项。nStartAfter参数指定了第一个要查找的列表项之前的那个列表项的索引。 lpszString指向包含要查找的前缀的字符串。该函数的返回值如果大于等于0,那么它是匹配列表项的索引,如果查找失败则返回CB_ERR。

       int InsertString(int nIndex,LPCTSTR lpszString);
       向组合框控件的列表框中插入一个列表项。nIndex参数指定了要插入列表项的位置,lpszString参数则指定了要插入的字符串。该函数返回字符串 被插入的位置,如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。

       int SelectString(int nStartAfter,LPCTSTR lpszString);
       在组合框控件的列表框中查找一个字符串,如果查找到则选中它,并将其显示到编辑框中。参数同FindString。如果字符串被查找到则返回此列表项的索引,如果查找失败则返回CB_ERR,并且当前选择项不改变。

       此外,CComboBox类还继承了CWnd类的成员函数GetWindowText、SetWindowText等。


一个最简单的应用就是通过combox选择然后在文本框中显示出来:

主要代码如下:

  //为combox添加下拉框的内容,默认index从0开始的

    ComBox_1.AddString(_T("111"));
    ComBox_1.AddString(_T("222"));
    ComBox_1.AddString(_T("333"));
    ComBox_1.SetCurSel(0);
//为我们的文本框也设置默认的值
    SetDlgItemText(IDC_EDIT1,_T("TEXT"));
//我们希望在组合框中选中的列表项改变时,将最新的选择项实时显示到编辑框中,那么这就要用到CBN_SELCHANGE通知消息

//获取combox的索引 然后通过索引找到文本内容

    int res=ComBox_1.GetCurSel();
    CString text;
    ComBox_1.GetLBText(res,text);

//将取到的文本显示到文本框中
    SetDlgItemText(IDC_EDIT1,text);



http://chatgpt.dhexx.cn/article/XEQGT2PN.shtml

相关文章

linux搭建tomcat集群

工作需要,要使用tomcat集群做负载均衡。准备把自己搭建的过程记录下来,供日后参考。 由于是自己练手,用的是自己电脑虚拟出来的3台虚拟机,系统版本CentOs6.5.话不多说,直接开始 装JDK于配置环境变量过程略过。。 把…

Nginx部署三台Tomcat集群详细操作步骤

详细步骤请看教程视频:视频地址 以下是安装教程和关键代码等资料: 讲解图例: 一、环境安装 JDK1.8安装教程:教程地址 Tomcat8.5获取链接: 链接:https://pan.baidu.com/s/18XqIcrehbdcs_s9lCG_xrA 提取…

Tomcat集群Session会话复制方案

Tomcat集群Session会话复制方案 一、配置Tomcat二、项目配置与启动配置 一、配置Tomcat 1.进入tomcat官网查找相应tomcat版本的文档&#xff0c;版本不同配置信息也就相应不同。 图中标识2就是tomcat默认的群集配置 2.打开tomcat/config/server.xml配置文件。 在 <Engin…

Tomcat 集群

多种方式实现 Tomcat 集群。 1 概述 1.1 集群能带来什么 提高服务的性能&#xff0c;例如计算处理能力、并发能力等&#xff0c;以及实现服务的高可用性。提供项目架构的横向扩展能力&#xff0c;增加集群中的机器就能提高集群的性能。提升对静态文件的处理性能。利用 Web 服务…

Tomcat集群同步原理

#概述 随着C/S架构中&#xff0c;客户端对服务器的访问量及访问次数逐渐增多&#xff0c;单个服务器已经不能够满足客户端的请求了。于是现在大多数服务器都做成了集群的形式。而服务器集群会有一个很大问题&#xff0c;就是同步问题。比如&#xff0c;现在我对一个有四台计算机…

零基础搭建Tomcat集群(超详细)

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

Nginx 搭建Tomcat集群

目录 一、架构图 二、配置上游服务器 三、配置集群服务 四、加权负载均衡 五、配置最大连接数 六、启动慢增长 一、架构图 二、配置上游服务器 打开config/nginx.conf 添加配置如下&#xff1a; 三、配置集群服务 刷新nginx后&#xff0c;集群配置完毕&#xff01; 四…

Tomcat集群及Session共享

Tomcat集群 由于单台Tomcat的承载能力是有限的&#xff0c;当我们的业务系统用户量比较大&#xff0c;请求压力比较大时&#xff0c;单台Tomcat是扛不住的&#xff0c;这个时候&#xff0c;就需要搭建Tomcat的集群&#xff0c;而目前比较流行的做法就是通过Nginx 来实现Tomcat…

Windows中部署Tomcat集群

1.新建文件夹tomcats 准备3台tomcat 测试&#xff1a; 错点&#xff1a; 使用的是7无缓存版本&#xff0c;但是扔显示8。解决&#xff1a;将环境变量中的catalina删掉。 ~~删除线格式~~ 2.修改配置文件 第一台8005 第二台8006 第三台8007 此位置第一台8091&#xff…

Nginx+Tomcat集群环境搭建

Tomcat集群能带来什么&#xff1f; 提高服务的性能、并发能力、以及高可用性提高项目架构的横向扩展能力 提高服务的性能 实际公司线上生产环境都会选择一台机器部署一个tomcat&#xff0c;多台机器完成集群&#xff0c;毕竟一台机器部署多个tomcat还是有一些共享瓶颈的&…

tomcat集群

tomcat集群 什么是集群 集群是一组协同工作的服务实体&#xff0c;用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来&#xff0c;一个集群就象是一个服务实体&#xff0c;但 事实上集群由一组服务实体组成。 集群的特性 与单一服务实体相比较&#xff0c;…

tomcat集群部署

tomcat集群部署 1 创建2个 tomcat 2 将 tomcat 官网文档的配置示例复制到 server.xml文件中 3 修改 server.xml 文档中的参数配置 3.1 Cluster    className表示tomcat集群时,之间相互传递信息使用那个类来实现信息之间的传递。channelSendOptions可以设置为2、4、8、10&a…

Nginx+tomcat集群

Nginxtomcat集群 定义&#xff1a;在测试环境中有多个tomcat运行这一个项目&#xff0c;需要nginx管理 2特点&#xff1a;1&#xff0c;增加项目访问能力 2&#xff0c;增加服务器性能 3&#xff0c;实现不同负载均衡 3负载均衡&#xff1a;根据每台服务器的性能分配其能承受住…

Tomcat集群配置

1.Tomcat集群 多个 Tomcat 服务器构成了一个集群&#xff08;Cluster&#xff09;系统&#xff0c;共同为客户提供服务。集群系统具有以下优点&#xff1a; 高可靠性高性能计算负载平衡 图1-1显示了由 JK插件和两个 Tomcat服务器构成的集群系统。集群系统的正常运作离不开以…

Tomcat 集群搭建入门

简介 由于单台Tomcat的承载能力是有限的&#xff0c;当我们的业务系统用户量比较大&#xff0c;请求压力比较大时&#xff0c;单台Tomcat是扛不住的&#xff0c;这个时候&#xff0c;就需要搭建Tomcat的集群&#xff0c;而目前比较流程的做法就是通过Nginx来实现Tomcat集群的负…

Tomcat 集群部署

Tomcat快速入门 Tomca基本介绍 环境准备 JVM介绍Java业务都是运行在java虚拟机上&#xff0c;java虚拟机简称JVM( java virtual machine) ​ 虚拟机是通过软件模拟出具有完整硬件系统的功能 ​ 为什么Java需要JVM虚拟机 ​ 早期C语言不支持跨平台&#xff0c;如果C语言想…

Tomcat系列之五:Tomcat集群

基于mod_proxy实现负载均衡 在httpd.conf中启用httpd-proxy.conf配置文件&#xff0c; Include /etc/httpd/extra/httpd-proxy.conf 修改httpd-proxy.conf文件&#xff1a; ProxyRequests Off <proxy balancer://lbcluster1>BalancerMember ajp://192.168.1.211:8009 loa…

集群与jetspeed

1 、 集群背景介绍 1.1 术语定义服务软体是b/s或c/s结构的s部分&#xff0c;是为b或c提供服务的服务性软件系统。 服务硬体指提供计算服务的硬件、比如pc机、pc服务器。 服务实体通指服务软体和服务硬体。 客户端指接受服务实体服务的软件或硬件。 1.2 两大关键特性集…

Tomcat集群搭建超详细

TOMCAT集群 目录 TOMCAT集群 1 1 集群 1 1.1 什么是集群 1 1.2 集群的特性 1 1.3 集群的分类 1 1.4 TOMCAT集群配置的优缺点 2 1.5 APACHETOMCAT 2 1.6 环境说明 2 2 软件安装 3 2.1 安装说明 3 2.2 JDK安装 3 2.3 APACHE安装 4 2.4 TOMCAT安装 4 3 集群配置 6 …

JAXB元素详解

JAXB简介 JAXB&#xff08;Java Architecture for XML Binding) 是一个业界的标准&#xff0c;是一项可以根据XML Schema产生Java类的技术。该过程中&#xff0c;JAXB也提供了将XML实例文档反向生成Java对象树的方法&#xff0c;并能将Java对象树的内容重新写到XML实例文档。从…