2008-11-17 84 views
1

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

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

忘记wxWidgets并纯粹讲述OLE和MSHTML,开始寻找问题原因的正确位置是什么?我尝试了天真的谷歌搜索“mshtml鼠标事件”或“mshtml轮”的变种,但没有给出任何好的指针。

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

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


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

+0

这是一个WAG(所以没有答案)...你托管什么版本的浏览器?是否有可能链接到IE的预滚轮版本? – Will 2008-11-17 20:09:05

+0

mshtml版本:6.00.2900.3314(xpsp_sp2_qfe.080215-1242) 承载此控件(包括IE)的其他应用程序支持滚轮。 – user38329 2008-11-17 20:32:14

回答