我在用MFC学习开发一些小工具时,使用过很多次ComboBox控件。虽然ComboBox很好用,新增的Ex还可以插入图片,
但是有时遇到某些细节上的操作,会发现ComboBox控制起来还是很不自在,而且很难修改。
例如:我想通过在ComboBox的文本框输入字符串,即可在下拉菜单下搜索匹配的一项(模糊搜索),但不知道为什么
总是指向该项时总是把文本框原有的输入覆盖掉(可能是默认自动选择写入文本框),文本框和下拉菜单之间功能实施绑
定在一起,暂时不知道如何各自分开控制(我并不想在下拉菜单上下移动时就给文本框赋值,求高手指导此解决方法)。
于是自制一个EditBox + ListBox合成的模拟ComboBox,这样的好处就是操作上可以分开控制,而且我还可以几个EditBox
共同控制同一个ListBox(可以根据EditBox的焦点指向方法响应,然后获取ListBox的位置,最后显示)。
操作上主要在PreTranslateMessage中通过控制焦点和指定的消息响应实现,代码如下:
BOOL CTestMyComboDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (G