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、第一次写相关博文,不好勿喷,小弟刚毕业出来工作,写得不好还请谅解。
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、第一次写相关博文,不好勿喷,小弟刚毕业出来工作,写得不好还请谅解。
相关文章推荐
- 用js实现输入提示(自动完成)的实例代码
- WPF DevExpress ComboBoxEdit 实现键值绑定,输入字符自动匹配
- 用js实现输入提示(自动完成)的实例代码
- JS实现输入信息自动匹配功能
- 用AJAX实现google输入自动完成的简单模拟
- 带有输入自动匹配功能的Combobox
- 使用FlexBox和Json实现类似ComboBox(类似Google的输入提示和自动)功能-基于JQuery-ASP.NET
- 用AJAX实现google输入自动完成的简单模拟(转)
- 用js实现输入提示(自动完成)
- 继承 System.Windows.Forms.ComboBox 实现支持自动完成功能的 ComboBox!个人感觉还可以!!!
- vim中实现php代码自动完成功能
- 自动完成提示框的实现示例代码
- 用AJAX实现google输入自动完成的简单模拟
- 用AJAX实现google输入自动完成的简单模拟
- AJAX实现google输入自动完成的简单模拟
- 用js实现输入提示(自动完成)
- 在Eclipse中实现PyQT4代码自动完成
- 用AJAX实现google输入自动完成的简单模拟
- AJAX实现google输入自动完成的简单模拟(转)
- DataGridViewComboBoxColumn 可以让用户输入并自动匹配选项的问题