2024年3月9日发(作者:)

一、 如何添加/删除Combo Box的内容

int AddString(LPCTSTR lpszItem);添加行

int DeletteString(UINT nIndex);删除指定行

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

void ResetContent();可以删除列表框中所有行

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

1 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表

中的一行。换行用Ctrl+回车。

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

如://控件内容初始化

CString strTemp;

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

内容

For(int i=1;i<=100;i++)

{

(“%d”,i);

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);

}

3 下拉的时候添加,如:

CString strTemp;

int iCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCount();//取得

目前已有行数

if(iCount<1)//防止重复多次添加

{

((CComboBox*)GetDlgItem(IDC_COMBO_CF))-> ResetContent();

For(int i=1;i<=100;i++)

{

(“%d”,i);

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);

}

}

4 删除指定行

DeleteString(UINT nIndex);

5 将行插入到指定位置

InsertString(int nIndex,LPCTSTR lpszItem);

6 查找

int FindString(int nStartAfter, LPCTSTR lpszItem);//可以在当前所有行中查找指定

的字符串的位置,nStartAfter指明从哪一行开始查找

int SelectString(int nStartAfter, LPCTSTR lpszItem);//可以选中包含指定字符串的

二、 如何控制Combo Box的下拉长度

首先要知道两点:一是在设计界面里,点击一下Combo Box的下拉箭头,此时出现

的调整框就是Combo Box的下拉调整框;二是属性里有个No integral height钩选项,

表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度

显示。

三、 选择其中的某行

1 选中

int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//当前选

中的行

2 设置

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n);//设置第n行内容

为显示内容

四、 取得Combo Box框内内容

1 取当前内容

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);

2 取其他行内容

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);

五、 获得焦点

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

if(GetFocus()==GetDlgItem(IDC_EDIT2))//判断焦点是否在编辑框IDC_EDIT2内,

但是,Combo Box的焦点不同,因为它是由edit和list box两部分组成的,所以,获得

焦点要用GetParent();

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

六、 Combo Box的消息映射宏

ON_CBN_DBLCLK 鼠标双击

ON_CBN_DROPDOWN 列表框被弹出

ON_CBN_KILLFOCUS/ ON_CBN_SETFOCUS 在输入框失去/得到输入焦点时产生

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

ON_CBN_EDITUPDATE 输入框中内容被更新