1. 背景
用 MFC 的组合框可以做出很好模糊搜索效果,但有个硬伤,当用虚拟键盘输入时,组合框会因失去焦点自动收缩,无法展现想要搜索的项,所以就用 CEdit 和 CListBox 定制了一个支持虚拟键盘输入的模糊搜索组合框。
2.具体实现
2.1 具体界面布局如下:
界面布局
从工具箱拖拽一个CEdit和CListbox,并在CListbox下放四个按钮,用于演示下拉框收起时效果。
2.2 给下拉框添加数据
for (int i = 0; i < 100; i++){CString strData;srand((unsigned)time(NULL));strData.Format(_T("%d 内容%d"), rand()*(i+1), i);m_listBox.AddString(strData);}
这里随意添加一些数据到下拉框中。
2.3 监测编辑框输入变化的函数实现如下:
void CCboxCustmerDlg::OnEnChangeInput(){ShowCbList(TRUE);m_bFind = FALSE;CString strInput;m_editInput.GetWindowText(strInput);if (!strInput.IsEmpty