这次我们在CEF显示的界面里加上了tooltips,也就是html的title属性,结果发现这玩意竟然不会显示,一开始我怀疑是自己的代码问题,很快我又去cefclient这个demo里测试了一下,确认了我的怀疑,只要打开了--off-screen-rendering-enabled,就会导致tooltips无法显示。我当然认为这是一个CEF的bug,于是去反馈issue,但是我同时也做了一堆搜索,一开始看到的都是关于manifest以及InitCommonControlsEx的问题,和这个问题并没有相关性。
直到我搜到这个issue,https://bitbucket.org/chromiumembedded/cef/issues/854/cef3-title-attribute-of-tags-is-not ,CEF在OSR模式下需要开发者手动处理CefDisplayHandler::OnTooltip事件,这玩意我记得文档上也没说过,也没人说过如何处理这个事件。那我想就直接刚,手动在这里显示tooltips就行了,于是掏出以前的代码,下面是可以抄的作业。
HWND hTips = CreateWindowEx(WS_EX_TOPMOST,
TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT,
CW_USEDEFAULT,