MFC 仿百度搜索

一、简述

因为要在项目中一个搜索的功能,完成后把功能抽出来写成了一个独立的|Demo。因为这个Demo比较独立,所以抽出来的过程中支持拖拽搜索结果的功能就丢掉了,重点关注搜索的功能。

1、功能亮点

(1)支持中英文搜索、全拼搜索(精确搜索)、简拼搜索;

(2)支持简单日志输出;

(3)支持对搜索结果进行翻页。

2、关键技术要点

(1)汉字转拼音,详细实现请参考 https://blog.csdn.net/shaoyiju/article/details/83832314

(2)全拼精确匹配

3、注意事项

(1)注意使用宽字符存放内容;

(2)注意所加载的txt文件需以ANSI格式保存,具体保存方式可百度;

(3)可根据需要把所有英文和拼音要转成小写进行匹配。

4、下载链接

本文项目Demo:https://download.csdn.net/download/shaoyiju/10772985

二、实现

注意:数据字典和汉字必须使用宽字符存放,因为使用一个汉字需要两个多字节的字符才能存放,使用多字节存放汉字的话,判断字符时会出现判断错误的问题。

1、UI界面:

UI界面

2、设计架构:

设计架构图

3、源码结构:

源码结构

 三、全拼精确匹配

所谓精确匹配就是输入简单的几个字符就能匹配到自己想要的结果。该匹配是针对全拼来说的,其他的英文不存在精确匹配的说法。

1、普通匹配

比如目前有以下数据源:

操马滴汉子你威武雄壮
去不去登山
夜上海是个不夜城

转换成匹配字段队列为

caomadihanziniweiwuxiongzhuang
cmdhznwwxz
操马滴汉子你威武雄壮
qubuqudengshan
qbqds
去不去登山
yeshanghaishigebuyecheng
yshsgbyc
夜上海是个不夜城

 当输入“han”,会匹配到

操马滴汉子你威武雄壮
去不去登山
夜上海是个不夜城

因为这三个数据源的匹配字段都含有“han” 。

2、精确匹配

还是之前的数据源,通过在每个汉字拼音前加星号*,匹配时判断所匹配到的字段里的匹配起始位置的第一个字符是否为星号*,如果是,则匹配正确,否则忽略。

转换成加星号*的匹配字段队列为

*cao*ma*di*han*zi*ni*wei*wu*xiong*zhuang
cmdhznwwxz
操马滴汉子你威武雄壮
*qu*bu*qu*deng*shan
qbqds
去不去登山
*ye*shang*hai*shi*ge*bu*ye*cheng
yshsgbyc
夜上海是个不夜城

当输入“han”,会匹配到

操马滴汉子你威武雄壮

即匹配到“汉”字,而不会匹配到“山”和“上”。

当输入“shan”,会匹配到

去不去登山
夜上海是个不夜城

即匹配到“山”和“上”字,而不会匹配到“汉”。

以上就是本文的全部内容,欢迎指正,转载请说明出处。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC(Microsoft Foundation Classes)是微软提供的面向对象的框架,用于开发Windows应用程序。360界面是指以360安全卫士为代表的360公司所推出的安全软件的用户界面。 要实现MFC仿360界面,首先需要熟悉MFC框架的使用方法和基本的界面设计原理。通过使用MFC提供的控件和资源编辑器,可以方便地创建界面元素,如按钮、菜单和窗口等。仿360界面需要根据360安全卫士的用户界面,进行对应的界面布局和设计。 在界面设计方面,可以参考360安全卫士的风格和配色方案。使用MFC提供的颜色设置和绘图功能,可以实现类似的界面效果。此外,还可以通过使用MFC的图表控件、进度条控件和列表控件等,展示和管理用户界面的各种信息。 在功能选项方面,可以根据360安全卫士的主要功能进行分析和设计。通过使用MFC提供的消息处理机制和事件处理函数,可以实现各种功能的触发和响应,包括杀毒、清理垃圾文件、系统优化等。 除了界面和功能的设计,还需要考虑用户体验和交互设计。可以通过使用MFC提供的对话框和消息框等,向用户提供友好的提示和交互界面。此外,还可以使用MFC的拖放功能和快捷键设置,提高用户的操作便利性和效率。 总之,要实现MFC仿360界面,需要熟悉MFC框架和360界面的设计原理,合理运用MFC提供的控件和功能,同时结合用户体验和交互设计,以达到良好的界面效果和功能实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值