我使用的是Microsoft Visual C ++和Windows 7 我正在使用ATL和MFC开发IE工具栏。 IE版本为11.0.9600.17420。
首先,我创建了实现IDeskBand
和IObjectWithSite
接口的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}}界面?