前段时间我在逛CSDN的时候,看见有些人提出上述问题,而回复总是不甚理想,我本是是一个潜水者,但是不希望让更多的人为这个问题而纠结,我把实现的方法给需要帮助的人说说吧。
其实说来很简单,其实就是自己实现webbrowser的IDownloadManager接口中的Download函数即可,具体如何操作请按下面几步实现:
1 在google搜索下ie55_lib.exe,运行之,便可在得到我们需要的接口定义的头文件:downloadmgr.h。
2 将该头文件添加进自己的工程,然后在引用webbroswer的窗口类中集成里面的IDownloadManager和IServiceProvider接口。其中窗口类可以使CWnd或者CDialog,例子如:
class CMyBrowserWnd :
, public IDownloadManager
{
};
3 然后重载QueryInterface方法,即让系统查询接口时调用我们重载的方法进行查询。具体代码可参考:
HRESULT CBrowserWnd::QueryInterface(REFIID riid, void **ppv)
{
if (IsEqualIID(riid,IID_IServiceProvider))
{
*ppv = static_cast<IServiceProvider*>(this);
return S_OK;
}
else
{
*ppv = NULL;
return E_NOINTERFACE;
}
}
4 接着重载Q