MFC之ComboBox控件用法实例教程

本文以实例形式较为详细的讲述了MFC中ComboBox控件的用法。分享给大家供大家参考之用。具体方法如下:

一、ComboBox简介:

ComboBox控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。
从工具栏中拖一个Combo Box控件.右击添加变量,变量名为cbBox.

二、用法:

1.为控件添加选项,指定默认选项

cbBox.AddString(_T("one"));
cbBox.AddString(_T("two"));
cbBox.AddString(_T("three"));

每个选项都有一个对应的索引号,跟数组下标一样,从0开始.由于默认的排序方式是按字母先后顺序所以one,two,three的索引为0,2,1

我们也可以把选项添加到指定的索引位置

cbBox.InsertString(0,_T("aaa")); //此时one,two,three的索引变为1,3,2

假如打开对话框时,我们要让three选项为combo box的默认选项.

cbBox.SetCurSel(2); //不过我们不太可能去记住每个选项的索引,所以先查找下它的索引是多少
int index = cbBox.FindStringExact(0,_T("three")); //0表示从索引为0的选项开始查找.如果找到有叫three的选项就返回它的索引号,没有找到返回CB_ERR也就是-1.

反过来我们已经有个选项显示在那了要知道它的索引号是多少

int index = cbBox.GetCurSel();

2.选择某个选项并获取其值

先获取索引号再根据索引号获取值.

CString csValue;
int index = cbBox.GetCurSel();
cbBox.GetLBText(index,csValue);//选项的值保存到csValues中

其实还有个更简单的获取值的方法,我们选项某个项之后它会显示在文本输入控件中.我们直接获取就行

cbBox.GetWindowTextW(csValue);

3.查找列表中的选项

int index = cbBox.FindStringExact(0,_T("three"));  //精确查找.
int index = cbBox.FindString(0,_T("three"));      //模糊查找.如果有选项threeabc也会返回索引值

假如下拉列表中的选项太多,你不愿意一个个的去选该怎么办?

这时候你可以在文本框中输入选项的前几个字,如果匹配到个某个选项将会自动显示在文本框中.这要用到模糊查询

首先要添加一个ON_CBN_EDITCHANGE事件.ON_CBN_EDITCHANGE消息映射宏会把文本框中输入值变化的消息绑定到一个函数中去处理

然后在消息处理函数中添加如下代码:

CString temp;
cbBox.GetWindowTextW(temp); //把文本框中输入的值放到一个变量temp中
int n =cbBox.FindString(0,temp); //查找下拉列表中是否是哪个选项包含字符串temp
if(n>=0)
{
 cbBox.SetCurSel(n);  //查找到的话就把选项名字显示在文本框中
}

4.删除选项

删除所有选项,也可以把下拉列表置空

cbBox.ResetContent();

删除某个选项.只能先查找到对应的索引号,再根据索引号删除

int index = cbBox.FindStringExact(0,_T("three"));
cbBox.DeleteString(index);

5.禁止在ComboBox中输入

有时候我们希望只能在下拉框中选择,而不允许在ComboBox中输入。很简单,只需把style改为Drop List即可

6.响应消息

有时候希望在ComboBox中选择一个之后值之后,想响应一个消息。也很简单,只需要对ComboBox的CBN_SELCHANG事件添加响应就可以了。

7.不能显示下拉内容如何解决

在OnSize()函数中设置ComboBox的高度。
——注意要判断窗口是否已经创建,可以用GetDlgItem(IDC_COMBO1)->GetSafeHwnd()判断,为真表示已经创建。
然后使用MoveWindow()重新设置控件大小,高度尽量大,因为他会根据内容自动调节。这样就可以完全显示下拉列表的内容了。

8.Extended Combo Box选项前面带个图标

Extended Combo Box的功能比Combo Box更多一点.其中有个功能就是可以在选项前加个图标.

先添加一个Extended Combo Box控件.并给它添加一个变量cbBoxE.

CImageList* pImageList;   //相当于一个特殊数组,但是它保存的是图片
pImageList = new CImageList();
pImageList->Create(32, 32, ILC_COLOR32, 0, 4); //
//在资源中添加一个bmp图片.id为IDB_BITMAP1
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //加载资源中的图片
pImageList->Add(&bmp, RGB(0, 0, 0)); //添加图片到imagelist中
cbBoxE.SetImageList(pImageList);
COMBOBOXEXITEM insItem; //添加图片选项时的参数.它是一个结构体,下面是里面一些变量的初始化
insItem.mask = CBEIF_IMAGE|CBEIF_TEXT;
insItem.iItem=0;
insItem.iImage=0;
insItem.pszText=_T("Line 1");
cbBoxE.InsertItem(&insItem);//在控件中添加一个选项,并且选项前面有图片

相信本文所述对大家学习VC++的MFC程序设计有一定的借鉴价值。

(0)

相关推荐

  • VC++的combobox控件用法汇总

    在VC++程序设计中,combobox控件是再普通不过的窗体元素控件了,而对于新手来说,掌握combobox 的各种用法显得尤其重要,本文就来总结一些实用的combobox控件用法,供大家参考. 一.添加/删除Combo Box内容: 1. 一般是在ComboBox控件属性的Data标签里添加,一行表示ComboBox下拉列表中的一行,换行用ctrl+回车. 2. 在程序初始化时动态添加,如:控件内容初始化: CString strTemp; ((CComboBox*)GetDlgItem(ID

  • ComboBox 控件的用法教程

    前面我们了解了ListBox(列表框)控件的使用,在vb.net中还有一个与ListBox控件十分相似的控件--ComboBox 控件,也叫组合框.组合框控件包括两个部分,一部分是上部可以输入列表项的文本框:另一部分是位于文本框下方的列表框,用于显示用户可以从中选择的项的列表 ComboBox 控件和ListBox 控件在功能上很相似,很多情况下,这两个控件是可以互换使用的,但是还是有某种特定的环境下只适合使用一种控件的情况. 通常,ComboBox控件适合于建议用户选择控件所列举的选项.同时又

  • winform中的ListBox和ComboBox绑定数据用法实例

    本文实例讲述了winform中的ListBox和ComboBox绑定数据用法.分享给大家供大家参考.具体实现方法如下: 本例实现将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容,代码如下: 复制代码 代码如下: //... //自定义了Person类(有Name,Age,Heigth等属性) List<Person> persons=new List<Person>(); persons.Add(new Person("WuMiao"

  • Ext中下拉列表ComboBox组件store数据格式用法介绍

    复制代码 代码如下: var p_years = new Ext.form.ComboBox( { fieldLabel : '统计年份', anchor : anchor_w, mode : 'remote', maxHeight:100, triggerAction : 'all', selectOnFocus : true, forceSelection : true, editable : false, //store :[['11', '2011'], ['12', '2012'],[

  • MFC之ComboBox控件用法实例教程

    本文以实例形式较为详细的讲述了MFC中ComboBox控件的用法.分享给大家供大家参考之用.具体方法如下: 一.ComboBox简介: ComboBox控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本. 从工具栏中拖一个Combo Box控件.右击添加变量,变量名为cbBox. 二.用法: 1.为控件添加选项,指定默认选项 cbBox.AddString(_T("one")); cbBox.AddString(

  • C#中WebBroeser控件用法实例教程

    WebBrowser是C#中非常实用的一个控件,本文以实例形式分析了WebBrowser的用法,供大家参考.具体分析如下: 一.WebBrowser常用属性: .Refresh();//刷新 .GoBack();//后退 .GoForward();//前进 .Navigate(new Uri(address)); //打开链接 .Dock = DockStyle.Fill; //完全停靠在父容器中 .ScriptErrorsSuppressed = true ; //关闭错误显示 Uri a =

  • Android开发之TextView控件用法实例总结

    本文实例总结了Android开发之TextView控件用法.分享给大家供大家参考,具体如下: TextView控件可以向用户展现文本信息,我们可以设置该文本信息是否能编辑 1.TextView基本使用 在程序中创建TextView对象 在xml文件中布局使用 2.New Android Project-> Project name:TextView Build Target:Android 2.2 Application name:TextViewDemo Package name:com.b5

  • Android Service控件用法实例分析

    本文实例讲述了Android Service控件用法.分享给大家供大家参考,具体如下: 1.Service是一个应用程序的组件 2.Service没有图形化界面 3.用来处理耗时比较长的功能(下载.播放MP3) 4.更新ContentProvider.Intent以及系统的启动 Servcie不是一个单独的进程,不是一个线程 定义一个Service比较简单,只要继承Service类,实现其生命周期的方法即可.一个定义好的Service必须在AndroidManifest.xml文件中通过<ser

  • Android编程实现图片放大缩小功能ZoomControls控件用法实例

    本文实例讲述了Android编程实现图片放大缩小功能ZoomControls控件用法.分享给大家供大家参考,具体如下: MainActivity代码: package example.com.myapplication; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import

  • Android开发之TimePicker控件用法实例详解

    本文实例分析了Android开发之TimePicker控件用法.分享给大家供大家参考,具体如下: 新建项目: New Android Project-> Project name:HelloSpinner Build Target:Android 2.2 Application name:HelloSpinner Package name:com.b510 Create Activity:MainActivity Min SDK Version:9 Finish 运行效果: 如果: return

  • ASP.NET中repeater控件用法实例

    本文实例讲述了ASP.NET中repeater控件用法.分享给大家供大家参考.具体实现方法如下: repeater绑定数据: 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) {         if(!IsPostBack)             BindStudent(); } private void BindStudent() {         string str = ConfigurationManag

  • Android中日期与时间设置控件用法实例

    本文实例讲述了Android中日期与时间设置控件用法.分享给大家供大家参考.具体如下: 1.日期设置控件:DatePickerDialog 2.时间设置控件:TimePickerDialog 实例代码: 页面添加两个Button,单击分别显示日期设置控件和时间设置控件,还是有TextView控件,用于显示设置后的系统时间 main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x

  • Android编程之Button控件用法实例分析

    本文实例讲述了Android编程之Button控件用法.分享给大家供大家参考,具体如下: 一.Button概述 android.widget.Button直接继承于android.wdiget.TextView. 直接子类有:CompoundButton. 间接子类有:CheckBox,RadioButton,Switch,ToggleButton. Button类表示一个"按钮"控件."按钮"控件可以被用户按下或者点击,来触发另一个操作. 二.Button的用法

随机推荐