MFC之下拉框

MFC可能会持续更新吧......因为各种原因,IDE用的vs2010。

新建一个MFC应用程序,项目名叫做comboBox,位置可自选。

在应用程序类型中选择基于对话框,点击完成

可以看到创建之后一个MFC窗口的初始样式

在右侧工具箱中选择combo box

注意选择前ctrl+A全选初始窗口,delete删除原来的控件。

下拉框右键属性,在data中添加项

注意分号分隔不同的项,比如:鸡翅;可乐;薯片

添加后的界面

不过此时的框中,鸡翅可乐的数据可以被修改,比如改成鸡腿,这是原来下拉的项中所没有的。

同样右键属性,在右边的type中,原本是dropdown,改选成droplist,这样就不可修改了。

注意一点,data中的和下拉框中项的排序不一定相同,如果需要按照自己的顺序,也是右键,将sort改选成false。

在代码中添加data项以及其他操作

右键添加变量,然后填写变量名,并选好访问方式,点击完成。

然后在左侧的类视图中点开CcomboBoxDlg,选择DodataExchange()方法,可以看到n_cbx已经和ComboxBox相关联。

点击OnInitDialog()函数,在其中填写代码。

//下拉框添加
n_cbx.AddString(TEXT("鸡翅"));
n_cbx.AddString(TEXT("可乐"));
n_cbx.AddString(TEXT("薯片"));
n_cbx.AddString(TEXT("蛋挞"));

设置默认选项,使得还没有选择时,框中有默认值。

n_cbx.SetCurSel(0);

其他一些操作

//插入操作
n_cbx.InsertString(4, TEXT("汉堡"));

//删除
n_cbx.DeleteString(3);

//获取1号的索引具体内容
CString str;             //准备一个str,得到1号索引中的值
n_cbx.GetLBText(1, str);
MessageBox(str);         //弹出str

触发事件

先注释获取的代码

然后打开:资源视图--dialog,然后选择第二个--控件事件--selectchange,当选项更改时,就会触发事件(就是在下拉框中选择另一个项)。然后可以监听事件并进行一些操作。

添加代码,当更换下拉框选项时,会弹出更改的选项

//拿到索引的位置
int index = n_cbx.GetCurSel();

CString str;
n_cbx.GetLBText(index, str);

MessageBox(str);

弹出效果图

原文地址:https://www.cnblogs.com/echobiscuit/p/12706832.html