MFC智能提示功能(通过CEdit和CListBox组合实现)

来源:互联网 发布:nginx 目录浏览 编辑:程序博客网 时间:2024/05/22 08:06

  

效果图如上。

 

 

    本功能只需要Edit编辑框和Listbox这两个控件组合使用即可实现。

    首先为CEdit控件添加ON_EN_CHANGE消息响应函数,编辑框里的内容变化的时候会触发该函数,ListBox的内容可以在此函数中插入(因为我的软件是MFC+MSSQL的,所以我在获取了Edit控件中的字符m_str以后,会利用这个m_str来从SQL数据库中搜索包含m_str的人员你姓名:Select    People_name   From  People   Where People_name   Like  '%'+m_str+'%'),从而完成了Listbox内容的填充。

   然后为Listbox添加ON_LBN_DBLCLK消息响应函数,此函数能够获取Listbox中你所选中的内容;

 

  友情提示:当Listbox和别的控件重叠的时候会造成Listbox控件的显示不完整,楼主的程序中Listbox后面其实是一个Listcontrol控件,起初的显示效果如下:

这种问题怎么解决呢,其实很简单,需要做两步:

1、CTRL+D调整控件TAB顺序,使得ListBox的顺序ID靠前;

2、给后面的Listcontrol控件添加WS_CLIPSIBLINGS属性即可,添加这个属性能够保证Listcontrol控件不会刷新和其他控件重叠的部分,代码如下:

 LONG style = GetWindowLong(m_listCtrlRecordInfo.GetSafeHwnd(),GWL_STYLE);
 style = style | WS_CLIPSIBLINGS ;
 SetWindowLong(m_listCtrlRecordInfo.GetSafeHwnd(),GWL_STYLE,style);

1 0
原创粉丝点击