1. 程式人生 > >MFC COMBOBOX 短程式碼 實現的自動匹配輸入 自動完成 但有小缺陷

MFC COMBOBOX 短程式碼 實現的自動匹配輸入 自動完成 但有小缺陷

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、第一次寫相關博文,不好勿噴,小弟剛畢業出來工作,寫得不好還請諒解。