在我的VC ++应用程序中,我有一个嵌入式浏览器(MSHTML)。它工作正常并正确处理鼠标(例如,点击和选择处理正常)。但是,嵌入式浏览器上的鼠标滚轮旋转没有任何效果。这是我的问题。

我对MSHTML嵌入的内部结构和一般的OLE不是很熟悉。这是一个wxWidgets应用程序(wxWidgets是一个C ++ GUI库),我正在使用它的IEHTMLWin组件(它托管一个MSHTML控件并将其包装在wxWindow接口中)。但是,我确实有源,我愿意做一些调试。

忘记wxWidgets并纯粹谈论OLE和MSHTML,开始寻找问题的原因是什么?我试过天真的谷歌搜索<!>“mshtml鼠标事件的变种<!>”;或<!>“; mshtml wheel <!>”,但没有给出任何好的指示。

如果您想查看IEHTMLWin的代码,可以浏览它这里。 iehtmlwin.c文件(1,5 k行)具有所有与OLE相关的代码,并实现托管Web浏览器控件所需的所有接口。值得注意的是,鼠标事件根本不会进入包含wxWindow(永远不会调用OnMouse)。

{UPD} mshtml版本:6.00.2900.3314。承载此控件的其他应用程序(包括IE)支持滚轮。 {/ UPD}


jdigital提示(关于winspector)非常有帮助。在一些消息嗅探后,我意识到问题与焦点有关。单击浏览器控件不会将焦点设置在浏览器控件上(与RichEdit不同),并且不会在那里发送WM_MOUSEWHEEL。所以新问题就是关注焦点。

有帮助吗?

解决方案

尝试使用Winspector( http://www.windows-spy.com/ )允许您查看Windows消息。确保滚轮事件正在通过。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top