找了好多,这是讲的最清楚的,与大家共享!
转:https://blog.csdn.net/fym0121/article/details/7515862
当你只需从一列对象中选出一个时,使用COMBO BOX是一个好主意,因为它节省空间。这篇文章讲述了如何使用COMBO BOX操作一列对象。
1、初始化COMBO BOX
我假设读者已经新建了一个对话框,并将一个COMBO BOX 拖放到这个对话框上。现在,右键那个COMBO BOX控件 --> 添加变量。类别选Control,类型是COMBOBOX,变量名我们输入m_cb1。
大家会发现,在我们项目的对话框类中,已经加入了CComboBox m_cbExample; 的定义
如图1 所示,COMBO BOX有一个下拉列表,我们现在要把那些下拉的字符串添加到COMBO BOX中,即初始化COMBO BOX。初始化,我们放到对话框类的OnInitDialog函数中。CComboBox类的AddString方法,用于添加这些字符串。
[cpp] view plain copy
- BOOL CRRDlg::OnInitDialog() //对话框的初始化,我的项目名叫RR
- {
- CDialog::OnInitDialog();
- m_cb1.AddString(_T("Alice")); //添加字符串
- m_cb1.AddString(_T("Bob"));
- m_cb1.AddString(_T("Charlie"));
- m_cb1.AddString(_T("David"));
- m_cb1.AddString(_T("Bob"));
- m_cb1.SetCurSel(0); //默认选择第一个
- }
2、检索COMBO BOX
初始化好了后,就该使用了,我们在图1 所示的下拉列表中选择一个,然后点击Button1,弹出一个框,告诉我们,刚才是选择了哪个。在IDE中,双击Button1,添加处理代码。
[cpp] view plain copy
- void CRRDlg::OnBnClickedButton1()
- {
- // TODO: 在此添加控件通知处理程序代码
- UpdateData(TRUE); //这个函数的使用请参考数据交换UpdateData,那篇文章
- int index = m_cb1.GetCurSel(); //这个函数用于得到用户选择的是下拉列表中的第几行,第一行的话,返回0,依次类推
- CString strI;
- strI.Format(_T("%d"),index);
- CString strC;
- m_cb1.GetLBText(index,strC); //根据行号,这个可以得到那行的字符串
- strC += strI;
- MessageBox(strC);
- index = m_cb1.FindStringExact(0,_T("Bob")); //检索下来列表中是否有Bob这个字符串
- if (CB_ERR != index)
- {
- strC.Format(_T("%d"),index);
- MessageBox(strC);
- m_cb1.DeleteString(index); //如果有的话,删除
- }
- }