combo box取消自动补齐功能

需求:
combo box输入字符后,弹出下拉菜单,默认的操作会把输入的字符修改成下拉列表中的第一项。我不想要这个,我希望下拉菜单不影响我的输入。

解决方案:
去掉combo的CBS_HASSTRINGS风格

副作用:
去掉了CBS_HASSTRINGS风格会导致无法使用GetLBText来获取Item文字。
我的解决方案:
用SetItemData把数据塞到combo中,需要的时候再用GetItemDataPtr取出来。:

<textarea cols="50" rows="15" name="code" class="cpp">// 填充数据 int index = m_comboInput.AddString(it-&gt;name.c_str()); DropItem* pData = new DropItem(); pData-&gt;name = it-&gt;name.c_str(); pData-&gt;path = it-&gt;fullPath.c_str(); m_comboInput.SetItemData(index, (DWORD_PTR)pData); // 取数据 DropItem* data = (DropItem*) this-&gt;GetItemDataPtr((int) lpDrawItemStruct-&gt;itemID);</textarea>

你可能感兴趣的:(combo box取消自动补齐功能)