[英]Custom Download Manager IWebbrowser2
抱歉,如果以前在這里回答過我的問題,但是好幾天以來,我一直在搜索Internet,包括SO,但沒有解決方案。
基本上,我想為IE Web瀏覽器控件(不是IDE本身)實現Download Manager。 我在MSDN上已經讀了很多書,其中有一個鏈接顯示了如何創建它。 這個示例的問題(在這種情況下是我的問題)是在哪里向我的Web瀏覽器注冊/應用IServiceProvider。 該條沒有說。 但是搜索我發現這個問題 ,並說我引用
使用CAxWindow :: QueryHost獲取IObjectWithSite指針。 調用SetSite傳遞IServiceProvider實現。
不幸的是,當我使用wxWidgets時,我不使用或不了解ATL。 那么,我在wxWebview或“香草” MS COM中從哪里得到呢?
這是我到目前為止所擁有的
HRESULT wxDownloadMgr::Download(IMoniker *pmk, IBindCtx *pbc,DWORD dwBindVerb,
LONG grfBINDF,BINDINFO *pBindInfo, LPCOLESTR pszHeaders,LPCOLESTR pszRedir,UINT uiCP )
{
// Get URL
LPOLESTR urlToFile;
HRESULT result = pmk->GetDisplayName( pbc, NULL, &urlToFile );
//OLECHAR is simply a wchar_t and an LPOLESTR is a wide character string (e.g. wchar_t*).
wxString url(urlToFile);
wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_DOWNLOAD_BEGINS,GetId(), url, "");
event.SetEventObject(this);//WHICH OBJECT TO SET HERE????????
HandleWindowEvent(event);
::MessageBox(NULL,"Download","Download Manager",MB_OK);
return S_OK;
}
STDMETHODIMP wxServiceProvider::QueryService(REFGUID guidService,
REFIID riid,
void **ppv)
{
HRESULT hr = E_NOINTERFACE;
if (guidService == SID_SDownloadManager && riid == IID_IDownloadManager)
{
// Create new DownloadMgr object using ATL.
CComObject<wxDownloadMgr>* pDownloadMgr;
hr = CComObject<wxDownloadMgr>::CreateInstance(&pDownloadMgr);
// Query the new CDownloadMgr object for IDownloadManager interface.
hr = pDownloadMgr->QueryInterface(IID_IDownloadManager, ppv);
}
return hr;
}
您可以重寫wxActiveXContainer :: QueryClientSiteInterface以將自己的接口實現(例如IServiceProvider或IDocHostUIHandler)添加到客戶端站點。 可以在wxIEContainer類中找到一個示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.