经过努力,我已经可以使用IE的“查看-工具栏-MyToolBar”方式显示自定义工具栏,但是,由于客户要求在工作区(即能显示HTML的主页面)右 键菜单中能直接显示工具栏,我不得不开始长达十多天的苦苦寻找,可是最终都失败了,最大的问题是,如果用网上介绍的 IDeskBand/IObjectWithSite基类模式,主要是通过SetSite中获得的pUnkSite接口获得工具栏窗口句柄,从而显示工具 栏,代码如下:
IOleWindow *pOleWindow;m_hwndParent = NULL;if(SUCCEEDED(punkSite->QueryInterface(IID_IOleWindow, (LPVOID*)&pOleWindow)))
{
pOleWindow->GetWindow(&m_hwndParent);
pOleWindow->Release();
}
...
但如果需要通过自定义的触发模式,譬如说鼠标右键菜单选择该功能,又该怎样做呢?请大家帮帮忙!

解决方案 »

  1.   

    call IWebBrowser2::ShowBrowserBar in your menu extension.The hidden HTML dialog's menuArguments property (on the external object) contains the window object of the window on which the context menu item was executed. To retrieve the top-level IWebBrowser2 reference, get IServiceProvider from the window's document and perform a QueryService for IID_IServiceProvider under the service SID_STopLevelBrowser (defined in Shlguid.h). From this second IServiceProvider, perform a QueryService for IID_IWebBrowser2 in the SID_SWebBrowserApp service.