MFC如何实现CComboBox输入框输入内容,下拉框自动匹配内容在下拉列表上方显示功能

MFC学习 专栏收录该内容
1 篇文章 0 订阅

备注:下拉框中所有的字符串和字符串的数量都写入了配置文件之中,程序初始化时会从配置文件中读取字符串添加到下拉框。
大致如下:[COMSTR]
NUM=3
Str01=hello
Str02=world
Str03=mfc
两个自定义函数:
函数名:GetPrivateProString
功能:从INI文件获取指定节中的指定字段,该值为字符串,若指定文件或者节名不存在,则返回缺省字符串
参数值: TCHAR* Appname 节名
TCHAR* Keyname 段名
TCHAR* Default 缺省返回字符串
TCHAR* Recbuffer 接收缓冲区指针
int BufferMaxlength 接收缓冲区最大长度
TCHAR* FileName INI文件名
返回值: 0—成功,其他—错误代码
函数名:GetPrivateProInt
功能:从INI文件获取指定节中的指定字段,该值为整数,若指定文件或者节名不存在,则返回缺省值
参数值: TCHAR* Appname 节名
TCHAR* Keyname 段名
TCHAR* Default 缺省返回值
TCHAR* FileName INI文件名
返回值: 0—成功,其他—错误代码
//组合框ID: ID_COMBO1,关联变量m_Combo1;当前对话框类为TheDlg,配置文件路径m_Settingfile;
//步骤一:在类中定义关于该组合框的CBS_EDITUPDATE的消息处理函数
afx_msg void OnCbnEditupdateCombo1();
//步骤二:给该组合框添加关于CBS_EDITUPDATE消息的消息映射,如下:
ON_CBN_EDITUPDATE(IDC_COMBO1, &TheDlg::OnCbnEditupdateCombo1)
//下面就是这个消息处理函数的实现了
void TheDlg::OnCbnEditupdateCombo1()
{
CString v_EditText="";//用来保存当前编辑框的字符串
TCHAR v_temp[32]={0};
TCHAR v_id[16]={0};
int v_Index=-1;
m_Combo1.GetWindowText(v_EditText);
int num-m_Combo1.GetCount();
//清除当前下拉框中的内容
for(int i=0;i<num;++i)
m_Combo1.DeleteString(num-i-1);
num=GetPrivateProInt(_T(“COMSTR”),_T(“NUM”),0,m_Settingfile);
for(int i=0;i<num;++i)
{
memset(v_temp,0,sizeof(v_temp));
memset(v_id,0,sizeof(v_id));
wsprintf(v_id,_T(“T%03d”),i+1);
GetPrivateProString(_T(“COMSTR”),v_id,_T(""),v_temp,sizeof(v_temp),m_Settingfile);
if(wcsstr(v_temp,v_EditText))
{
m_Combo1.InsertString(0,v_temp);
m_Combo1.SetTopIndex(0);
v_Index=i;
}
else
{
m_Combo1.InsertString(i,v_temp);
}
}
if(v_Index!=-1)
m_Combo1.ShowDropDown(TRUE);
else
m_Combo1.ShowDropDown(FALSE);
}

  • 1
    点赞
  • 0
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值