各位大侠,小弟 想问在 VC 里 如何 实现 象 机票网站,选择起飞城市的时候,下拉城市列表,可以通过字母键 索引城市?
如:
<INDEX CODE="AKA" CITYNAME="A安康市" AIRPORT=" 五里铺机场"/>
<INDEX CODE="AKU" CITYNAME="A阿克苏市" AIRPORT=" 温宿机场"/>
<INDEX CODE="AQG" CITYNAME="A安庆市" AIRPORT=" 大龙山机场"/>
<INDEX CODE="AYN" CITYNAME="A安阳市" AIRPORT=" 安阳机场"/>
<INDEX CODE="BAV" CITYNAME="B包头市" AIRPORT=" 海兰泡机场"/>
<INDEX CODE="PEK" CITYNAME="B北京市" AIRPORT=" 首都国际机场"/>
<INDEX CODE="BHY" CITYNAME="B北海市" AIRPORT=" 福城机场"/>
<INDEX CODE="BSD" CITYNAME="B保山市" AIRPORT=" 保山机场"/>
<INDEX CODE="BPX" CITYNAME="C昌都市" AIRPORT=" 昌都马草机场"/>
<INDEX CODE="CGD" CITYNAME="C常德市" AIRPORT=" 桃花机场"/>
<INDEX CODE="CGQ" CITYNAME="C长春市" AIRPORT=" 大房身机场"/>
<INDEX CODE="CHG" CITYNAME="C朝阳市" AIRPORT=" 朝阳机场"/>
现在 要想 在VC 里实现, VC combox 里添加 了以上Item 后,下拉列表,按字母键“B”则 索引到 B 包头市 及其以后的所有带B 的选项 ??
请 各位 大侠 支招!
------解决方案--------------------------------------------------------
你所谓的按字母键是指 dropdown类型的edit接收输入么?
------解决方案--------------------------------------------------------
根据你的意思,按我的理解,做了一个简单的例子。不知道是不是你要的那种。
(如果你要例子代码,留下你的邮箱)
大体实现如下:
1。将CCombobox类子类化。
2。子类化的类中实现OnCbnEditchange方法(CBN_EDITCHANGE消息的方法)
3。在OnCbnEditchange方法里面,根据输入的数据,动态加载Combobox的内容。
4。关键代码如下:
- C/C++ code
extern const wchar_t *g_items[11][2];void SearchCComboBox::OnCbnEditchange(){ // TODO: 在此添加控件通知处理程序码代 CString str; this->GetWindowText(str); // 先全部删除 while (this->GetCount() !=0) { this->DeleteString(0); } if (str.GetLength() == 0) { this->ShowDropDown(FALSE); } else { for (int i = 0; i < 11; ++i) { LPCTSTR tmp = g_items[i][0]; // 输入的长度大于数据的长度 if (_tcslen(tmp) < str.GetLength()) { continue; } else if (_tcsnicmp(str, tmp, str.GetLength()) != 0) { continue; } else { this->AddString((LPCTSTR)g_items[i][1]); } } if (this->GetCount() > 0) { this->ShowDropDown(TRUE); } else { this->ShowDropDown(FALSE); } } }