找回密码
 立即注册
收起左侧

解决cef浏览器无法显示tooltip问题(标签中的title属性无效...

1
回复
632
查看
[复制链接]
累计签到:793 天
连续签到:5 天
来源: 原创 2019-3-27 18:49:50 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 一叶知秋 于 2019-3-27 18:53 编辑

开发环境


VS2012 + Qt5.4.0 + cef_binary_3.3396.1786.gd3e36d0_windows32

问题介绍


CEF浏览器加载HTML文件后,标签中的title属性无效,鼠标停留在上面无tooltip弹出。

解决方案


解决方法参考了这篇博客 https://www.cnblogs.com/luckbird/p/cef-tooltip.html

思考


为什么按照该博客介绍的方法就可以了呢?由于我对manifest不是很熟悉,所以先去查找学习了一些相关知识。如果对manifest比较熟悉的话,应该可以很快的看出

其实就是在manifest加入了附加清单依赖项,也就是下面这段

  1.   <dependency>
  2.     <dependentAssembly>
  3.       <assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
  4.     </dependentAssembly>
  5.   </dependency>
复制代码

知道了这一点后,再结合前面学习manifest过程中学到的知识,我们可以简化一些操作,说实话我在按照原博客介绍的手动输入那一长串命令时错了很多次~~~

我们直接在项目上右击选择属性 -> 连接器 -> 清单文件,找到附加清单依赖项,填入如下代码(注意这里value用的是单引号,编译后manifest中就是双引号,填坑~~~)

  1. type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'
复制代码

编译,运行,tooltip出现了,至此问题已经解决。

疑问


本着寻根问底的精神,我们继续探讨为什么添加了这个不知所云的附件清单依赖项之后就可以了呢?

这篇Assembly Manifest详解给了我们答案 https://blog.csdn.net/atlashr/article/details/4395659

经过学习可以知道,是链接库时出现了问题。原来cef使用到了comctl32.dll这个库,然而这个库有两个版本,一个是版本5,一个是版本6,

可以到C:\Windows\WinSxS搜索到。

程序启动后默认是链接到版本5的库,但是我们需要链接到版本6的库,之前添加的附加清单依赖项就是指定程序去链接版本6的comctl32.dll。

至于为什么链接到版本为6的comctl32.dll可以,不知原博主是怎么找到解决方案,感兴趣的可以继续去谷歌。

最后,这算是cef的bug吗?

参与人数 1人气 +1 收起 理由
xiaoshuaijinniu + 1 很详细!

查看全部评分总评分 : 人气 +1

回复

使用道具 举报

累计签到:793 天
连续签到:5 天
2019-3-27 18:55:33 显示全部楼层
发帖之前的预览功能怎么找不到了?可以使用MARKDOWN吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册