下拉链表Combo-box Control

常用属性:

Sort:对添加到列表框的字符串进行自动排序。(对指定位置的元素项无效)

Type:有三个类型

Simple:没有下拉按钮,可以输入字符串,可以通过上下左右切换显示的item。

Dropdown:有下拉按钮,可以输入,可以下拉选择item。

下拉列表:有下拉按钮,不可以输入,可以下拉选择item。

列表框常用消息映射宏
     ON_CBN_DBLCLK                                               鼠标双击
     ON_CBN_DROPDOWN                                       列表框被弹出
     ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS   在输入框失去 / 得到输入焦点时产生
     ON_CBN_SELCHANGE                                       列表框中选择的行发生改变
     ON_CBN_EDITUPDATE                                       输入框中内容被更新

控件焦点问题

通常要判断控件是否获得了焦点,可以用GetFocus()函数
      例如:if(GetFocus() == GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框IDC_EDIT_VALUE2内。
      但是combobox 的焦点不同,因为它是由edit和listbox两部分组成的
      所以获得焦点要用GetParent():if((GetFocus()->GetParent()) == GetDlgItem(IDC_COMBO_CF))

常用操作:

    //下拉链表添加item
m_combox_one.AddString(_T("zero"));
m_combox_one.AddString(_T("one"));
m_combox_one.AddString(_T("four"));
m_combox_one.AddString(_T("five"));
m_combox_one.AddString(_T("six"));
m_combox_one.AddString(_T("seven"));
m_combox_one.AddString(_T("eight"));
m_combox_one.AddString(_T("nine"));
m_combox_one.AddString(_T("ten"));
//下拉链表指定位置插入item
m_combox_one.InsertString(, _T("insert two"));
m_combox_one.InsertString(, _T("insert three")); //设置下拉链表最大显示item个数
int maxshowitem = ;
m_combox_one.SetMinVisibleItems(maxshowitem); //通过index设置需要显示的item内容
int nshowindex = ;
m_combox_one.SetCurSel(nshowindex); //从下拉链表得到被选择显示的item的index
int ngetIndex = m_combox_one.GetCurSel(); //获取指定index的item的内容
int nIndex = ;
CString strCBText;
m_combox_one.GetLBText(nIndex, strCBText); //通过控件获取被选中显示的item的内容
CString strWinText;
GetDlgItem(IDC_COMBOX_ONE)->GetWindowTextW(strWinText); //通过item内容查找其index
int nStartAfter = ;
CString itemstring = _T("four");
int nfindstringIndex = m_combox_one.FindStringExact(nStartAfter, itemstring);
nfindstringIndex = m_combox_one.FindString(nStartAfter, itemstring); //通过item内容,指定其显示的item,并且返回item的index
CString itemcontain= _T("insert three");
int nincludestringIndex = m_combox_one.SelectString(nStartAfter, itemcontain);//删除指定index位置的item
int ndeleteindex = ;
m_combox_one.DeleteString(ndeleteindex); // ((CComboBox*)GetDlgItem(IDC_COMBOX_ONE))等效于m_combox_one
//取得item数
int iCount = ((CComboBox*)GetDlgItem(IDC_COMBOX_ONE))->GetCount(); //清除目前所有项
//m_combox_one.ResetContent(); //设置或得到输入框中被选中的字符位置
int nStartChar = ;
int nEndChar = ;
m_combox_one.SetEditSel(nStartChar, nEndChar);
DWORD editsel=m_combox_one.GetEditSel(); //取不到结果????? //设置输入框中可输入的最大字符数。
int nMaxChars = ;
m_combox_one.LimitText(nMaxChars);
    //通过item内容查找其index
int nStartAfter = ;
CString itemstring = _T("four");
int nfindstringIndex = m_combox_one.FindStringExact(nStartAfter, itemstring);
itemstring = _T("fo");//查找前缀匹配的item
nfindstringIndex = m_combox_one.FindString(nStartAfter, itemstring);

MFC控件之Combo Box的更多相关文章

  1. MFC控件编程之复选框单选框分组框

    MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...

  2. MFC控件CTabCtrl关联变量

    1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,将该控件绑定一个变量 用两种方法: 1 ) 自己定义成员变量 CTabCtr ...

  3. MFC控件的SubclassDlgItem

    MFC控件的SubclassDlgItem 要在程序中创建新设计的控件,显然不能用自动创建的办法,因为对话框模板对新控件的特性一无所知.程序可以用手工方法创建控件,在调用派生类的Create函数时,派 ...

  4. [MFC] 梳理一个简单的图片处理桌面软件中用到的MFC控件技巧

     前言 前些天应好友之拖,帮忙设计一个简单的图像处理的小软件.朋友把核心算法封装好了,但是是用openCV类似于console的编程环境,要我在此基础上改成MFC桌面程序.下图是做成之后的效果: 我是 ...

  5. EXTJS 4.2 资料 控件之combo 联动

    写两个数据源: 1.IM_ST_Module.js { success:true, data:[ { ModuleId: '1', ModuleName: '资讯' } , { ModuleId: ' ...

  6. MFC控件编程进度条编写

    MFC控件编程进度条编写 一丶进度条编程需要用到的方法 进度条MFC已经帮我们封装好类了. 叫做 CProgressCtrl  进度条编程也很简单. 封装的方法也就那个那几个. GetPos()  获 ...

  7. MFC 控件编程之水平滚动条跟垂直滚动条

    MFC 控件编程之水平滚动条跟垂直滚动条 一点水平滚动条的操作 首先在操作滚动条的时候.我们要知道滚动条的一些属性. 比如我们要设置 最大值 最小值. 以及每次递增的值是多少.都要设置. 所有就有一个 ...

  8. MFC控件编程之组合框跟列表框

    MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添 ...

  9. MFC控件编程之 按钮编辑框.静态文本的使用,以及访问控件的七种方法.

    MFC控件编程之 按钮编辑框.静态文本的使用以及访问控件的七种方法. 一丶按钮.静态文本的通用属性. 他们都有一个属性.就是可以输入标题内容.以及可以自定义控件ID. 创建一个MFC Dlg对话框. ...

随机推荐

  1. [NewCode 6] 重建二叉树

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  2. golang 本地构建包

    说点废话 为小胖做一个温馨提示的功能,思路已经整理好.今天使用goquery的时候,发现已经修改了.其中需要一个golang.org/x/net/html这个包,但是官网已经被万恶的GFW给墙了.这里 ...

  3. SQL Server 字符串拼接、读取

    一.查询结果使用,字符串拼接 declare @names nvarchar(1000) declare @ParmDefinition nvarchar(1000) declare @sqltext ...

  4. 利用 Azure Devops 创建和发布 Nuget 包

    利用 Azure Devops 创建和发布 Nuget 包 原 Visual Studio Team Service ,简称 VSTS,能够创建 pipelines 管道以构建应用程序,并将其部署到任 ...

  5. GDI+配置

    GDI+的配置过程: 一.打开stdafx.h文件,在其中加入: #include "Gdiplus.h" #pragma comment(lib,"Gdiplus.h& ...

  6. SignalR简介

    什么是SignalR? ASP.NET SignalR是ASP.NET开发人员的库,它简化了向应用程序添加实时Web功能的过程.实时Web功能是指服务器代码在连接的客户端可用时立即将内容推送到连接的客 ...

  7. 阿里云oss服务通用类

    在webconfig中配置信息 <?xml version="1.0" encoding="utf-8"?><configuration> ...

  8. FluentAPI详细用法

    设置主键 modelBuilder.Entity<x>().HasKey(t => t.Name); 设置联合主键 modelBuilder.Entity<x>().Ha ...

  9. MariaDB 库的基本操作(2)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...

  10. solr 下载 有dist目录的(6需要8)

    http://archive.apache.org/dist/lucene/solr/ solr6 需要java8