我的应用程序使用 MSHTML 有点问题。除了主题行中提到的快速打字时奇怪的击键丢失行为外,我一切正常。我认为这可能与我用来接收事件的方法有关?
详细信息:我的应用程序是在 Visual Studio 2005 中用 C++ 和 MFC 编写的单独程序。该程序附加到 Internet Explorer 的当前运行(独立)实例,并获取指向IWebBrowser2
接口的指针并将其传递给类型为的对象CCmdTarget
:
class CHandler : public CCmdTarget
{
IWebBrowser2* m_pWebBrowser2;
DWORD m_dwBrowserCookie;
…
DECLARE_DISPATCH_MAP()
};
这个类跟踪浏览器中发生的事情。我使用以下命令接收浏览器事件:
LPUNKNOWN pUnkSink = GetIDispatch(FALSE);
retval = AfxConnectionAdvise((LPUNKNOWN)m_pWebBrowser2, DIID_DWebBrowserEvents2, pUnkSink, FALSE, &m_dwBrowserCookie);
如果我注释掉AfxConnectionAdvise
,那么不会错过任何击键但不会有更多事件。如果我把它留在里面,我会沉没事件,但如果打字很快就会错过偶尔的击键。
我知道有很多方法可以连接到事件(AtlAdvise
连接点),但这是我唯一可以使用的方法。
任何建议都会很棒!