提升用戶輸入效率的最佳做法之一是,為TextBox 與 ComboBox 控件加入自動完成功能。所謂自動完成功能,也就是當用戶在輸入某一個詞句的時候,與已經輸入的句首或詞首相符的詞句就會自動填入或顯示出來讓你選擇。比如現在的google搜索的時候,你隨便輸入一點東西,會彈出與你輸入最相近的一些搜索關鍵字。在.Net中這個功能是很容易的,已經有相應的屬性可以供使用。在vc6.0中好像沒有,似乎沒有這個功能。
使用以下代碼可以簡單的實現這個功能:
對ComboBox控件添加CBN_EDITCHANGE消息的處理函數,也就是當有輸入發生改變的時候,自動調用該函數
添加代碼如下:
假設ComboBox控件變量是 m_cbUserName, 臨時變量 CString strTmp;則:
m_cbUserName.GetWindowText(strTmp);
int iLen = strTmp.getlength();
//...如果ilen=0可以直接返回
if(m_cbUserName.FindSTring(-1, strTmp) != -1)
{
m_cbUserName.SelectString(-1, strTmp);
}
m_cbUserName.SetEditSel(ilen,-1);
唯一的缺陷就是,如果你的列表中有王二小,而你又只想輸入 王二 的話......