在VS2010下,通过MFC用EditBox + ListBox自制ComboBox(附加简单的模糊搜索功能)

本文介绍了一种在VS2010 MFC环境下,通过组合EditBox和ListBox来模拟ComboBox的方法,以实现更灵活的控制和模糊搜索功能。作者在实践中遇到ComboBox的默认行为问题,即输入文本时会覆盖原有输入,因此选择自制组件。代码主要在PreTranslateMessage中处理焦点和消息响应。附带了一个测试工程链接供参考,欢迎新手和有经验的开发者提供反馈和建议。
摘要由CSDN通过智能技术生成

       我在用MFC学习开发一些小工具时,使用过很多次ComboBox控件。虽然ComboBox很好用,新增的Ex还可以插入图片,

但是有时遇到某些细节上的操作,会发现ComboBox控制起来还是很不自在,而且很难修改。

例如:我想通过在ComboBox的文本框输入字符串,即可在下拉菜单下搜索匹配的一项(模糊搜索),但不知道为什么

总是指向该项时总是把文本框原有的输入覆盖掉(可能是默认自动选择写入文本框),文本框和下拉菜单之间功能实施绑

定在一起,暂时不知道如何各自分开控制(我并不想在下拉菜单上下移动时就给文本框赋值,求高手指导此解决方法)。

于是自制一个EditBox + ListBox合成的模拟ComboBox,这样的好处就是操作上可以分开控制,而且我还可以几个EditBox

共同控制同一个ListBox(可以根据EditBox的焦点指向方法响应,然后获取ListBox的位置,最后显示)。


操作上主要在PreTranslateMessage中通过控制焦点和指定的消息响应实现,代码如下:

BOOL CTestMyComboDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此添加专用代码和/或调用基类

	if (G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值