您的位置:首页 > 编程语言

MFC COMBOBOX 短代码 实现的自动匹配输入 自动完成 但有小缺陷

2014-07-20 21:59 429 查看
1、想要实现的功能:

mfc自带的combobox控件实现自动匹配输入,比如用户输入 'c' 后,在下拉的项中存在以c开头的item,就自动匹配此item,并且除用户输入的字符外,其他字符显示被选中状态。

2、网上有现成例子存在,但代码不够简洁,比较多,而且涉及到子父窗口的消息传递,稍微有点繁琐(ps:可能有更简洁的,但我不知道)

3、实现代码:

A、mfc中添加CComboBox控件,关联控件ID,映射CComboBox的CBN_EDITCHANGE消息。

B、在父窗口类中保存一个成员变量 int i1;

C、在CBN_EDITCHANGE的消息响应函数中实现:

CString edittext;

CString comboxtext;

m_combox.GetWindowText(edittext);

int count = m_combox.GetCount();

DWORD dwSel;

dwSel=m_combox.GetEditSel();

int icont = LOWORD(dwSel);

if ((i1+1) == icont)

{

for (int i=0;i<count;i++)

{

m_combox.GetLBText(i,comboxtext);

if (0 == comboxtext.Find(edittext))

{

m_combox.SetCurSel(i);

m_combox.SetEditSel(edittext.GetLength(),-1);

break;

}

}

}

dwSel=m_combox.GetEditSel();

i1 = LOWORD(dwSel);

4、有一些缺陷的存在,就是对回删操作有时也会出现自动匹配的问题,主要是逻辑上排除不了,如果有哪个大神知道怎么排除还望告知,小弟感激不尽!!!(ps:不想去获取键盘的回删按钮的消息事件,进而去处理,想尽量简单就简单)

5、第一次写相关博文,不好勿喷,小弟刚毕业出来工作,写得不好还请谅解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: