CComboBox常用法

 

CComboBox常用法

1.  CComboBox创建

    声明:

    virtual BOOL Create(

       DWORD dwStyle,//风格

       const RECT& rect,//区域

       CWnd* pParentWnd,//父窗口

       UINT nID //控制ID

);

例子:

m_pComboBox->Create(

   WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST,

   CRect(10,10,200,100), pParentWnd, 1);

注:用本例创建的CComboBox如果你的数据比较长的话则无法看到大于编辑框长度的内容,为了能看到大于编辑框长度的内容请中上面的dwStyle中加入CBS_AUTOHSCROLL属性

 

2.  CComboBox风格     

    风格如下:

    CBS_AUTOHSCROLL           //自动水平滚动条  

    CBS_DISABLENOSCROLL   //选中时始终显示滚动条  

    CBS_DROPDOWN              //下拉式  

    CBS_DROPDOWNLIST       //下拉列表  

    CBS_HASSTRINGS             //为字符串提供GetText()函数  

    CBS_LOWERCASE             //转换为小写  

    CBS_NOINTEGRALHEIGHT //指定组合框由应用程序来指定大小的  

    CBS_OEMCONVERT           //OEM字符集转换  

    CBS_OWNERDRAWFIXED  //所有项目的高度是一样的  

    CBS_OWNERDRAWVARIABLE //指定单一项目的高度  

    CBS_SIMPLE                     //简单风格  

    CBS_SORT                        //排序  

    CBS_UPPERCASE              //转换为大写 

    CBS_AUTOHSCROLL           //自动水平滚动条

    CBS_DISABLENOSCROLL   //选中时始终显示滚动条

    CBS_DROPDOWN              //下拉式

    CBS_DROPDOWNLIST       //下拉列表

    CBS_HASSTRINGS             //为字符串提供GetText()函数

    CBS_LOWERCASE             //转换为小写

    CBS_NOINTEGRALHEIGHT //指定组合框由应用程序来指定大小的

    CBS_OEMCONVERT           //OEM字符集转换

    CBS_OWNERDRAWFIXED  //所有项目的高度是一样的

    CBS_OWNERDRAWVARIABLE //指定单一项目的高度

    CBS_SIMPLE                     //简单风格

    CBS_SORT                        //排序

    CBS_UPPERCASE              //转换为大写

 

2.  初始化数据

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

   2).在程序初始化时动态添加

     m_pComboBox ->AddString(“测试数据”); 

3.  删除指定行

    m_pComboBox ->DeleteString( 0 ) //删除指定行 

 

4.  插入指定位置

    m_pComboBox ->InsertString( 1, “测试数据” ) //将行插入到指定位置  

 

5.  删除所有项

    m_pComboBox ->ResetContent(); //消除现有所有内容 

 

6.  查找指定字符串

    //可以在当前所有行中查找指定的字符串的位置,nStartAfter指明从那一行开始进行查找。

FindString( int nStartAfter, LPCTSTR lpszItem ) 

//可以选中包含指定字符串的行

    SelectString( int nStartAfter, LPCTSTR lpszItem ) 

 

7.  选择其中某行

    //(1)选中:  

    int iPos= m_pComboBox ->GetCurSel(); //当前选中的行。  

    //(2)设置  

    m_pComboBox ->SetCurSel(n) //设置第n行内容为显示的内容。 

 

8.  获取总行数

    int GetCount()//得到当前列表框中行的数量 

 

9.  取得Combo Box框内容

    /*(1)获取当前内容*/ 

    m_pComboBox ->GetWindowText(strTemp); //将获取的值存放到CString类型变量strTemp中。   

    /*(2)获取其他行内容*/ 

    m_pComboBox ->GetLBText(n,strTemp);  //其中n为从0开始的索引值  

 

10.  获得焦点

    通常要判断控件是否获得了焦点,可以用GetFocus()函数

例如我们要判断焦点是否在编辑框IDC_EDIT_VALUE2内,可用如下语句:

    if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))

    但是ComboBox 的焦点不同,因为它是由editlistbox两部分组成的,所以获得焦点要用GetParent()

    if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))  

 

11. 改变下拉框大小

    在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框

 

12. 常用消息映射宏

    ON_CBN_DBLCLK       鼠标双击

    ON_CBN_DROPDOWN   列表框被弹出

    ON_CBN_SETFOCUS     在输入框得到输入焦点时产生

    ON_CBN_KILLFOCUS    在输入框失去焦点时产生

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

    ON_CBN_EDITUPDATE   输入框中内容被更新

    使用以上几种消息映射的方法为定义原型如:afx_msg void memberFxn( );的函数,并且定义形式如ON_Notification( id, memberFxn )的消息映射。

   如果在对话框中使用组合框,Class Wizard会自动列出相关的消息,并能自动产生消息映射代码。

你可能感兴趣的:(CComboBox常用法)