webkit中tooltip不顯示的解決方法

在WebKit/WebKit/win/WebView.cpp裏面有如下一段代碼:

 

這段代碼是用來顯示tooltip的,但當我編譯webkit後,tooltip就是不顯示,而webkit的nightlybuild版本和safari都可以顯示tooltip,這讓人覺得很奇怪? 一樣的代碼爲什麼運行結果就不一樣呢?用google搜索了很多關鍵字,最後發現了原因所在:編譯問題。在http://www.eggheadcafe.com/software/aspnet/36214009/tooltips-disappear-when-compiled-under-unicode.aspx裏面有一篇帖子介紹了當定義unicode宏之後,tooltip會消失掉。在webkit裏面,我不想去掉unicode宏,解決這個問題的方法有兩種:1.將TOOLINFO改爲TOOLINFOA,並將SendMessage中涉及TOOLINFO結構體的改爲SendMessageA,例如::SendMessageA(m_toolTipHwnd, TTM_ADDTOOLA, 0, reinterpret_cast<LPARAM>(&info));2.像帖子裏面介紹的重新定義一個TOOLINFO結構體,並使用SendMessageW發送消息。

 

從上面的解決方法中可以看出cbSize的作用了:通過cbSize,可以知道使用的是寬字符還是窄字符,並可以知道調用者想使用那個版本的API。微軟在很多地方使用了這個方法來解決windows api的兼容性問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章