视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
CComboBox技巧
2020-11-09 07:29:24 责编:小采
文档

1. CComboBox风 CBS_AUTOHSCROLL //自动水平滚动条 CBS_DISABLENOSCROLL //选中时始终显示滚动条 CBS_DROPDOWN //下拉式 CBS_DROPDOWNLIST //下拉列表 CBS_HASSTRINGS //为字符串提供GetText()函数 CBS_LOWERCASE //转换为小写 CBS_NOINTEGRALHEIGHT //指定

1. 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. 初始化数据

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

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);//strTemp为CString
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);//strTemp为CString


--------------------------------------------------------------------------------

3. 删除指定行

DeleteString( UINT nIndex ) //删除指定行
DeleteString( UINT nIndex ) //删除指定行


--------------------------------------------------------------------------------

4.插入指定位置

InsertString( int nIndex, LPCTSTR lpszItem ) //将行插入到指定位置
InsertString( int nIndex, LPCTSTR lpszItem ) //将行插入到指定位置


--------------------------------------------------------------------------------

5.删除所有项

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent(); //消除ID为IDC_COMBO_CF现有所有内容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent(); //消除ID为IDC_COMBO_CF现有所有内容


--------------------------------------------------------------------------------

6.查找指定字符串

FindString( int nStartAfter, LPCTSTR lpszItem ) //可以在当前所有行中查找指定的字符串的位置,nStartAfter指明从那一行开始进行查找。
SelectString( int nStartAfter, LPCTSTR lpszItem ) //可以选中包含指定字符串的行
FindString( int nStartAfter, LPCTSTR lpszItem ) //可以在当前所有行中查找指定的字符串的位置,nStartAfter指明从那一行开始进行查找。
SelectString( int nStartAfter, LPCTSTR lpszItem ) //可以选中包含指定字符串的行


--------------------------------------------------------------------------------

7.选择其中某行

//(1)选中:
int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel(); //当前选中的行。
//(2)设置
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n) //设置第n行内容为显示的内容。
//(1)选中:
int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel(); //当前选中的行。
//(2)设置
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n) //设置第n行内容为显示的内容。


--------------------------------------------------------------------------------

8.获取总行数

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


--------------------------------------------------------------------------------

9.取得Combo Box框内容


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

//如果定义了关联的变量,例如m_combo,可以直接获取:m_combo->GetWindowText(strTemp);

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

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

//如果定义了关联的变量,例如m_combo,可以直接获取:m_combo->GetWindowText(strTemp);

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


--------------------------------------------------------------------------------

10.获得焦点

通常要判断控件是否获得了焦点,可以用GetFocus()函数
例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框IDC_EDIT_VALUE2内。
但是combobox 的焦点不同,因为它是由edit和listbox两部分组成的,所以获得焦点要用GetParent():
if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))
if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))


--------------------------------------------------------------------------------

11.改变下拉框大小

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


--------------------------------------------------------------------------------

12.常用消息映射宏

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会自动列出相关的消息,并能自动产生消息映射代码。

下载本文
显示全文
专题