当前位置: 代码迷 >> VC >> Combox 怎么实现下拉字母键索引Item?
  详细解决方案

Combox 怎么实现下拉字母键索引Item?

热度:5134   发布时间:2013-02-25 00:00:00.0
Combox 如何实现下拉字母键索引Item??
各位大侠,小弟 想问在 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);        }    }    }
  相关解决方案