VC中Combo Box的使用小结

时间:2021-01-09 15:52:35

VC中Combo Box的使用小结


0. 初始化

CComboBox* pCComboBox = (CComboBox*)GetDlgItem(IDC_COMBO2);
pCComboBox->InsertString(0, _T("xxxx"));
pCComboBox->InsertString(1, _T("xxxxxx"));
pCComboBox->InsertString(2, _T("xxxxxxx"));
pCComboBox->SetCurSel(0);



1. 如何控制Combo Box的下拉长度.
    a. 首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。
    b. 属性里有个 No integral height 钩选项,表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度显示。

2. 设置当前项或得到当前是第几项  
   m_ComboBox1.SetCurSel(1);    //SetCurSel函数可改变标签控件当前选定的项目
   m_ComboBox1.GetCurSel();     //得到当前是第几项.0是第一项,1是第二项

3. 如何使控键ComboBox不能输入只能在下拉菜单中选择?
   VC6中style属性设为csDropDownList   //DropList?!
   VC2005中Type属性设为Drop List

4. 在程序初始化时动态添加项
   CString strTemp;
   ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除现有所有内容
    for(int i=1;i<=100;i++)
   {
       strTemp.Format("%d",i);
       ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
   }
   // AddString(strTemp)相当于InsertString(0, strTemp)    //将行插入到指定位置

5. DeleteString( UINT nIndex )//删除指定行,
6. 插入 nsertString( int nIndex, LPCTSTR lpszItem )//将行插入到指定位置
7. 查找
   FindString( int nStartAfter, LPCTSTR lpszItem )//可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。
   int SelectString( int nStartAfter, LPCTSTR lpszItem )//可以选中包含指定字符串的行

  
8. 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。
  
9. 取当前内容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);

10. 取其他行内容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);  
  
11. 获得焦点
通常要判断控件是否获得了焦点,可以用GetFocus()函数
例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框 IDC_EDIT_VALUE2内。
但是combobox 的焦点不同,因为它是由edit和listbox两部分组成的
所以获得焦点要用GetParent():if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))
   //////////////////////////////////////////////////////////////
12. 如果 ComboBox 的 Sorted 属性设置为 true,
   则新添加项将按字母顺序插入到列表中。否则,在列表的结尾处插入项。

13. 要立即响应选择框的改变(即选择框一改变选项,就立刻将结果传递进去)!
   响应他的哪个消息比较好?

   如果是只能选择的响应ON_CBN_SELCHANGE
   如果是可以编辑的,那么要立刻响应编辑就是ON_CBN_EDITCHANGE

14、CBN_SELENDOK是什么作用?
   This notification message is sent when the user clicks a list item,
   or selects an item and then closes the list.
   It indicates the user's selection is to be processed

15、介绍一下列表框几种常用的消息映射宏:

   ON_CBN_DBLCLK 鼠标双击
   ON_CBN_DROPDOWN 列表框被弹出
   ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS 在输入框失去/得到输入焦点时产生
   ON_CBN_SELCHANGE 列表框中选择的行发生改变
   ON_CBN_EDITUPDATE 输入框中内容被更新
   使用以上几种消息映射的方法为定义原型如:afx_msg void memberFxn( );的函数,
   并且定义形式如ON_Notification( id, memberFxn )的消息映射。
   如果在对话框中使用组合框,Class Wizard会自动列出相关的消息,并能自动产生消息映射代码。

16、改变ComboBox的下拉列表框宽度
   一般情况下,列表框的宽度和选择框是一样宽的,为了让列表框变的更宽,可以用
   m_Combobox.setdroppedwidth(int width); 来调整 他的宽度