VC++6.0 通過HTTP方式獲取網頁 OpenURL
阿新 • • 發佈:2019-01-03
// 顯示圖片, lpstrImgUrl 為圖片URL地址,hWnd 為視窗控制代碼 HRESULT Utils::ShowPic(char*lpstrImgUrl,HWND hWnd)
{
HDC hDC_Temp=GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
DWORD dwFileSize,dwByteRead;
//讀取網頁上圖片檔案,實際是個CHttpFile指標 CInternetSession session("HttpClient ");
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl);
if (httpFile!=INVALID_HANDLE_VALUE)
{
dwFileSize= httpFile->GetLength();//獲取檔案位元組數 if (dwFileSize==0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}
//分配全域性儲存空間 HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;
if (hGlobal == NULL)
return E_FAIL;
if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配記憶體塊 return E_FAIL;
//把檔案讀入記憶體緩衝區 dwByteRead = httpFile->Read(pvData,dwFileSize);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
//裝入圖形檔案 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
if(FAILED(bResult))
return E_FAIL;
OLE_XSIZE_HIMETRIC hmWidth; //圖片的真實寬度, 單位為英寸 OLE_YSIZE_HIMETRIC hmHeight; //圖片的真實高度, 單位為英寸 pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
//轉換hmWidth和hmHeight為pixels距離,1英寸=25.4毫米 int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
//將圖形輸出到螢幕上(有點像BitBlt) bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,
0,hmHeight,hmWidth,-hmHeight,NULL);
pPic->Release();
httpFile->Close();//關閉開啟的檔案 if (SUCCEEDED(bResult))
{
return S_OK;
}
else
{
return E_FAIL;
}
}
// 顯示圖片, lpstrImgUrl 為圖片URL地址,hWnd 為視窗控制代碼 HRESULT Utils::ShowPic(char*lpstrImgUrl,HWND hWnd)
{
HDC hDC_Temp=GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
DWORD dwFileSize,dwByteRead;
//讀取網頁上圖片檔案,實際是個CHttpFile指標CInternetSession session("HttpClient");
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl);
if (httpFile!=INVALID_HANDLE_VALUE)
{
dwFileSize= httpFile->GetLength();//獲取檔案位元組數 if (dwFileSize==0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}
//分配全域性儲存空間 HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;
if (hGlobal == NULL)
return E_FAIL;
if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配記憶體塊 return E_FAIL;
//把檔案讀入記憶體緩衝區 dwByteRead = httpFile->Read(pvData,dwFileSize);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
//裝入圖形檔案 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
if(FAILED(bResult))
return E_FAIL;
OLE_XSIZE_HIMETRIC hmWidth; //圖片的真實寬度, 單位為英寸 OLE_YSIZE_HIMETRIC hmHeight; //圖片的真實高度, 單位為英寸 pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
//轉換hmWidth和hmHeight為pixels距離,1英寸=25.4毫米 int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
//將圖形輸出到螢幕上(有點像BitBlt) bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,
0,hmHeight,hmWidth,-hmHeight,NULL);
pPic->Release();
httpFile->Close();//關閉開啟的檔案 if (SUCCEEDED(bResult))
{
return S_OK;
}
else
{
return E_FAIL;
}
}
{
HDC hDC_Temp=GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
DWORD dwFileSize,dwByteRead;
//讀取網頁上圖片檔案,實際是個CHttpFile指標 CInternetSession session("HttpClient
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl);
if (httpFile!=INVALID_HANDLE_VALUE)
{
dwFileSize= httpFile->GetLength();//獲取檔案位元組數 if (dwFileSize==0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}
//分配全域性儲存空間 HGLOBAL hGlobal
LPVOID pvData = NULL;
if (hGlobal == NULL)
return E_FAIL;
if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配記憶體塊 return E_FAIL;
//把檔案讀入記憶體緩衝區 dwByteRead = httpFile->Read(pvData,dwFileSize);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE,
//裝入圖形檔案 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
if(FAILED(bResult))
return E_FAIL;
OLE_XSIZE_HIMETRIC hmWidth; //圖片的真實寬度, 單位為英寸 OLE_YSIZE_HIMETRIC hmHeight; //圖片的真實高度, 單位為英寸 pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
//轉換hmWidth和hmHeight為pixels距離,1英寸=25.4毫米 int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
//將圖形輸出到螢幕上(有點像BitBlt) bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,
0,hmHeight,hmWidth,-hmHeight,NULL);
pPic->Release();
httpFile->Close();//關閉開啟的檔案 if (SUCCEEDED(bResult))
{
return S_OK;
}
else
{
return E_FAIL;
}
}
// 顯示圖片, lpstrImgUrl 為圖片URL地址,hWnd 為視窗控制代碼 HRESULT Utils::ShowPic(char*lpstrImgUrl,HWND hWnd)
{
HDC hDC_Temp=GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
DWORD dwFileSize,dwByteRead;
//讀取網頁上圖片檔案,實際是個CHttpFile指標CInternetSession session("HttpClient");
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl);
if (httpFile!=INVALID_HANDLE_VALUE)
{
dwFileSize= httpFile->GetLength();//獲取檔案位元組數 if (dwFileSize==0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}
//分配全域性儲存空間 HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;
if (hGlobal == NULL)
return E_FAIL;
if ((pvData = GlobalLock(hGlobal)) == NULL)//鎖定分配記憶體塊 return E_FAIL;
//把檔案讀入記憶體緩衝區 dwByteRead = httpFile->Read(pvData,dwFileSize);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
//裝入圖形檔案 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
if(FAILED(bResult))
return E_FAIL;
OLE_XSIZE_HIMETRIC hmWidth; //圖片的真實寬度, 單位為英寸 OLE_YSIZE_HIMETRIC hmHeight; //圖片的真實高度, 單位為英寸 pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
//轉換hmWidth和hmHeight為pixels距離,1英寸=25.4毫米 int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
//將圖形輸出到螢幕上(有點像BitBlt) bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,
0,hmHeight,hmWidth,-hmHeight,NULL);
pPic->Release();
httpFile->Close();//關閉開啟的檔案 if (SUCCEEDED(bResult))
{
return S_OK;
}
else
{
return E_FAIL;
}
}