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 输入框中内容被更新
发布评论