/*********************************************************************** * URLDownloadToCacheFileA (URLMON.@) */ HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN lpUnkCaller, LPCSTR szURL, LPSTR szFileName, DWORD dwBufLength, DWORD dwReserved, LPBINDSTATUSCALLBACK pBSC) { LPWSTR url = NULL, file_name = NULL; int len; HRESULT hres; TRACE("(%p %s %p %d %d %p)\n", lpUnkCaller, debugstr_a(szURL), szFileName, dwBufLength, dwReserved, pBSC); if(szURL) { len = MultiByteToWideChar(CP_ACP, 0, szURL, -1, NULL, 0); url = heap_alloc(len*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, szURL, -1, url, len); } if(szFileName) file_name = heap_alloc(dwBufLength*sizeof(WCHAR)); hres = URLDownloadToCacheFileW(lpUnkCaller, url, file_name, dwBufLength*sizeof(WCHAR), dwReserved, pBSC); if(SUCCEEDED(hres) && file_name) WideCharToMultiByte(CP_ACP, 0, file_name, -1, szFileName, dwBufLength, NULL, NULL); heap_free(url); heap_free(file_name); return hres; }
StString StActiveXCtrl::loadURL(const CString& theUrl) { if(theUrl.IsEmpty()) { // invalid URL return StString(); } // obtaining the full url CComBSTR aURLTemp(theUrl); CW2CT aFullUrl(aURLTemp); // load file and return path to cache IBindHost* aHost = NULL; wchar_t aFilePath[ST_MAX_PATH]; this->GetClientSite()->QueryInterface(IID_IBindHost, (void** )&aHost); if(URLDownloadToCacheFileW(aHost, aFullUrl, aFilePath, ST_MAX_PATH, 0, NULL) == S_OK) { return StString(aFilePath); } return StString(); }