I use Microsoft Visual C++ and Windows 7.
I am developing IE toolbar with ATL and MFC. IE version is 11.0.9600.17420.
First of all, I have created COM object implementing IDeskBand
and IObjectWithSite
interfaces.
Second, I have implemented IDeskBand
methods and IObjectWithSite::SetSite
method. It takes only one parameter, IUnknown *pUnkSite
.
As I remember, I can do pUnkSite->QueryInterface(IID_IOleWindow, (void**)&pOleWindow);
to get IOleWindow interface from site, and then I can call pOleWindow->GetWindow(&hWnd);
to get parent window handle; so I can create my toolbar window as a child of window with this hWnd
.
So I did it and realized that pUnkSite->QueryInterface(IID_IOleWindow, (void**)&pOleWindow);
returns 0x80004002
which is E_NOINTERFACE
error, so IOleWindow
is not implemented by pUnkSite
object! I opened IE in debugger, loaded symbols, traced to QISearch
and realized that there is no implementation of IOleWindow
interface. If I am not mistaken it was CIEFrameAuto
interface.
So, how can I obtain IOleWindow
interface for parent window for my toolbar?