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);
弹出效果图