Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。

1、定义控件对应变量

假定已经创建了一个Dialog,并且给该Dialog建立了类,并且从控件工具箱将 Combo Box 控件拖放到上面。打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代码中会不断使用这个变量。

为该下拉框建立相应的响应函数,该响应函数应该是在Dialog建立的类下

2、向控件添加 Items

1) 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。

2) 利用函数 AddString() 向 Combo Box 控件添加 Items,如:

m_cbExample.AddString(“StringData1”);

m_cbExample.AddString(“StringData2”);

m_cbExample.AddString(“StringData3”);

3) 也可以调用函数 InsertString() 将 Item 插入指定位置 nIndex,如:

m_cbExample.InsertString( nIndex, “StringData” );

为了使添加Items后光标会停留在第一个Items上可以用m_cbExample.SetCurSel(0);来实现

3、从控件得到选定的Item

假设在控件列表中已经选定某项,现在要得到被选定项的内容,首先要得到该项的位置,然后得到对应位置的内容。这里会用到两个函数,如:

int nIndex = m_cbExample.GetCurSel();

CString strCBText;

m_cbExample.GetLBText( nIndex, strCBText);

这样,得到的内容就保存在 strCBText 中。

若要选取当前内容,可调用函数GetWindowText(strCBText)。

4、在控件中查找给定Item

这种操作一般用于在程序中动态修改控件中该项的值,可以用函数FindStringExact() 精确匹配,如:

int nIndex = m_cbExample.FindStringExact( nStartAfter, “value to be found”);

nStartAfter指明从哪一行开始查找。如果查找成功,返回的是该项的位置;否则,返回CB_ERR。

也可以选中包含指定字符串的项,如:

int nIndex = m_cbExample.SelectString( nStartAfter, “value to be selected”);

5、删除控件中的Item

该操作可以利用函数DeleteString(),需要指定被删除项的位置,如:

m_cbExample.DeleteString(nIndex);

也可以使用函数ResetContent(),清除目前的所有项,如:

m_cbExample.ResetContent();

6、显示控件中的某项

int nIndex = m_cbExample.GetCurSel();  //当前选中的项

m_cbExample.SetCurSel(nIndex);  //设置第nIndex项为显示的内容

7、得到或设置输入框中被选中的字符位置

DWORD GetEditSel( ) /BOOL SetEditSel( int nStartChar, int nEndChar );

BOOL LimitText( int nMaxChars ); 设置输入框中可输入的最大字符数。

8、列表框常用消息映射宏

ON_CBN_DBLCLK  鼠标双击

ON_CBN_DROPDOWN  列表框被弹出

ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS  在输入框失去/得到输入焦点时产生

ON_CBN_SELCHANGE  列表框中选择的行发生改变

ON_CBN_EDITUPDATE  输入框中内容被更新

MFC下拉框使用方法的更多相关文章

  1. bootstrap中selectpicker下拉框使用方法实例

    最近一直在用bootstrap 的一些东西,写几篇博客记录下.... bootstrap selectpicker是bootstrap里比较简单的一个下拉框的组件,先看效果如下: 附上官网api链接, ...

  2. Python + Selenium 定位非selected型下拉框的方法

    最近在尝试给自己负责的模块写UI自动化的Demo 登录及切换页面比较顺利 但是遇到下拉框的选择时,遇到了一点困难 我负责的模块页面的下拉框并非Select类型,无法使用select_by_index ...

  3. MFC下拉框

    在函数OnInitDialog()中添加一下语句可以添加选项到下拉框中 m_comboBox.AddString(_T("ALKATIP Basma Tom")); m_combo ...

  4. MFC 下拉框Combo Box

    下拉框常用的事件是Change事件.属性常用:Data(英文;分隔),Sort(是否排序) // OnInitDialog()中 m_cbx.SetCurSel();//设置默认选项 //OnBnCl ...

  5. Select-or-Die演示11种美化下拉框select方法

    在线预览 下载地址 在线实例 <div class="main"> <div class="mianc"> <h1>默认&l ...

  6. InstallShield Limited Edition for Visual Studio 国内注册时国家无下拉框解决方法

    注册地址:http://learn.flexerasoftware.com/content/IS-EVAL-InstallShield-Limited-Edition-Visual-Studio 火狐 ...

  7. 清空select下拉框的方法

    $("#search").find("option").remove(); //或者 $("#search").empty();

  8. PHP下拉框选择的实现方法

    实现 第一种PHP下拉框实现方法: < ?php //提交下拉框; //直接饱触发onchange事件的结果 $id=$_GET['myselect']; // myselect 为locati ...

  9. jQuery Ajax MVC 下拉框联动

    无刷新下拉框联动方法: Controllers代码 public JsonResult DH_Change(string DH_ID) { List<SelectListItem> Tea ...

随机推荐

  1. 1.(1)编写一个接口ShapePara,要求: 接口中的方法: double getArea():获得图形的面积。double getCircumference():获得图形的周长 (2)编写一个圆类Circle,要求:圆类Circle实现接口ShapePara。 该类包含有成员变量: radius:public 修饰的double类型radius,表示圆的半径。 x:private修饰的dou

    package jiekou1; public interface ShapePara { //定义常量PI final double PI=3.14; //定义抽象方法 //获得图形面积 doubl ...

  2. smarty3--registerPlugin()函数报错问题

    smarty版本:smarty3.1.30 registerPlugin错误信息: Notice: Trying to get property of non-object in E:\Joomla\ ...

  3. 教你50招提升ASP.NET性能(一):缓存是最后的手段

    (1)Caching is a last resort 招数1: 缓存是最后的手段 Projects that use multiple levels of cache often demonstra ...

  4. cocos2d-x 将cocosbuilder输出文件映射成对象的原理

    转自:http://www.cnblogs.com/fox7nights/archive/2013/02/21/2920640.html 一.调用代码 CCNode* GameOverScene::l ...

  5. 【转】Android studio 导入github工程

    http://blog.csdn.net/feixiaku/article/details/45155587/ 从github下载两个开源项目: PagerSlidingTabStrip    |   ...

  6. vmware mac虚拟机 停在启动界面

    前言: 关于vmware安装mac 10.8 可以从参看:http://www.cnblogs.com/zyf2013/p/3888242.html 安装完成以后重新启动,卡在了白苹果启动画面处. 或 ...

  7. android 开源 OCR 项目 及手写识别

    http://blog.csdn.net/archfree/article/details/6023676 1)一个为Android平台,将识别由手机的相机拍摄的图像文本应用程序. http://co ...

  8. Asp.Net 5使用第三方容器

    这几天在学习Asp.Net 5,现在文档以及博客之类的资料实在太少了,不看源码几乎举步维艰,好在全都是开源的,看看微软的代码也获益良多. 看到DependencyInjection的代码里除了默认的容 ...

  9. View绘制详解(二),从setContentView谈起

    掐指一算,本来今天该介绍View的测量了,可是要说View的测量,那就要从setContentView谈起了,setContentView本身涉及到的东西也是挺多的,所以今天我们就先来看看这个setC ...

  10. multi-threads synchronization use conditional mutex

    #include <pthread.h> int thread_flag; pthread_cond_t thread_flag_cv; pthread_mutex_t thread_fl ...