pUnkSite-> QueryInterface(IID_IOleWindow)在我的BHO中失败并带有E_NOINTERFACE

时间:2016-07-30 13:29:20

标签: c++ internet-explorer com bho queryinterface

我使用的是Microsoft Visual C ++和Windows 7 我正在使用ATL和MFC开发IE工具栏。 IE版本为11.0.9600.17420。

首先,我创建了实现IDeskBandIObjectWithSite接口的COM对象 其次,我实施了IDeskBand方法和IObjectWithSite::SetSite方法。它只需要一个参数IUnknown *pUnkSite

我记得,我可以pUnkSite->QueryInterface(IID_IOleWindow, (void**)&pOleWindow);从站点获取IOleWindow接口,然后我可以调用pOleWindow->GetWindow(&hWnd);来获取父窗口句柄;所以我可以使用hWnd创建我的工具栏窗口作为窗口的子窗口。

所以我做了,并意识到pUnkSite->QueryInterface(IID_IOleWindow, (void**)&pOleWindow);返回0x80004002 E_NOINTERFACE错误,因此IOleWindow pUnkSite没有实现QISearch对象!我在调试器中打开IE,加载符号,跟踪到IOleWindow并意识到没有CIEFrameAuto接口的实现。如果我没弄错的话,那就是IOleWindow界面。

那么,如何为工具栏的父窗口获取{{1}}界面?

0 个答案:

没有答案