1 //頭部包含afxinet.h
2 #include <afxinet.h>
3 CInternetSession::OpenURL函數原型為:
4 CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址
5 DWORD dwContext = 1, //上下文ID
6 DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //標記
7 LPCTSTR pstrHeaders = NULL, //發送到服務器的數據頭
8 DWORD dwHeadersLength = 0 );//發送到服務器的數據頭長度
9 dwFlags可以為:
10 INTERNET_FLAG_RELOAD 強制重讀數據
11 INTERNET_FLAG_DONT_CACHE 不保存到緩存
12 INTERNET_FLAG_TRANSFER_ASCII 使用文本數據
13 INTERNET_FLAG_TRANSFER_BINARY 使用二進制數據
14 //獲取網頁的方法代碼如下
15 CString getURLContext(LPCTSTR pstrURL)
16 {
17 //自定義http頭信息
18 char* headers="Accept:*/*\r\n"
19 "Accept-Language:zh-cn\r\n"
20 "User-Agent:VCTestClient\r\n";
21 CString m_strHTML;
22 try
23 {
24 CInternetSession sess;//建立會話
25 CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//打開文件
26 注意:OpenURL 方法的dwFlags參數 必須選擇傳輸模式為INTERNET_FLAG_TRANSFER_ASCII 或者 INTERNET_FLAG_TRANSFER_BINARY
27 CString szData,szAllData;
28 while(pF->ReadString(szData))
29 {
30 //讀取文件
31 szAllData+="\r\n";
32 szAllData+=szData;
33 }
34 pF->Close();
35 sess.Close();
36 m_strHTML=szAllData;
37 }
38 catch(CException *e)
39 {
40 AfxMessageBox("獲取數據失敗");
41 }
42 return m_strHTML;
43 }
-------------------------------------------------------------------------------------------------------------------------------------
// 顯示圖片, lpstrImgUrl 為圖片URL地址,hWnd 為窗口句柄
HRESULT CBMPDlg::ShowPic(char *lpstrImgUrl,HWND hWnd)
{
HDC hDC_Temp=::GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
DWORD dwFileSize,dwByteRead;
char* headers = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*"
"Accept-Encoding: gzip, deflate\r\n"
"Accept-Language: zh-CN\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Cache-Control: no-cache\r\n";
//讀取網頁上圖片文件,實際是個CHttpFile指針
CInternetSession session("HttpClient");
DWORD dwFlags = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE;
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl,1,dwFlags,headers,strlen(headers));//1,dwFlags
if (httpFile!=INVALID_HANDLE_VALUE)
{
char achQueryBuf[32];
DWORD dwQueryBufLen = sizeof(achQueryBuf);
CHttpFile * pHF = (CHttpFile*)httpFile;
pHF->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, achQueryBuf, &dwQueryBufLen, NULL);
dwFileSize = (DWORD)atol(achQueryBuf);
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;
}
}
// 顯示圖片, 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;
}
}
1 //頭部包含afxinet.h
2 #include <afxinet.h>
3 CInternetSession::OpenURL函數原型為:
4 CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址
5 DWORD dwContext = 1, //上下文ID
6 DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //標記
7 LPCTSTR pstrHeaders = NULL, //發送到服務器的數據頭
8 DWORD dwHeadersLength = 0 );//發送到服務器的數據頭長度
9 dwFlags可以為:
10 INTERNET_FLAG_RELOAD 強制重讀數據
11 INTERNET_FLAG_DONT_CACHE 不保存到緩存
12 INTERNET_FLAG_TRANSFER_ASCII 使用文本數據
13 INTERNET_FLAG_TRANSFER_BINARY 使用二進制數據
14 //獲取網頁的方法代碼如下
15 CString getURLContext(LPCTSTR pstrURL)
16 {
17 //自定義http頭信息
18 char* headers="Accept:*/*\r\n"
19 "Accept-Language:zh-cn\r\n"
20 "User-Agent:VCTestClient\r\n";
21 CString m_strHTML;
22 try
23 {
24 CInternetSession sess;//建立會話
25 CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//打開文件
26 注意:OpenURL 方法的dwFlags參數 必須選擇傳輸模式為INTERNET_FLAG_TRANSFER_ASCII 或者 INTERNET_FLAG_TRANSFER_BINARY
27 CString szData,szAllData;
28 while(pF->ReadString(szData))
29 {
30 //讀取文件
31 szAllData+="\r\n";
32 szAllData+=szData;
33 }
34 pF->Close();
35 sess.Close();
36 m_strHTML=szAllData;
37 }
38 catch(CException *e)
39 {
40 AfxMessageBox("獲取數據失敗");
41 }
42 return m_strHTML;
43 }
2 #include <afxinet.h>
3 CInternetSession::OpenURL函數原型為:
4 CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址
5 DWORD dwContext = 1, //上下文ID
6 DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //標記
7 LPCTSTR pstrHeaders = NULL, //發送到服務器的數據頭
8 DWORD dwHeadersLength = 0 );//發送到服務器的數據頭長度
9 dwFlags可以為:
10 INTERNET_FLAG_RELOAD 強制重讀數據
11 INTERNET_FLAG_DONT_CACHE 不保存到緩存
12 INTERNET_FLAG_TRANSFER_ASCII 使用文本數據
13 INTERNET_FLAG_TRANSFER_BINARY 使用二進制數據
14 //獲取網頁的方法代碼如下
15 CString getURLContext(LPCTSTR pstrURL)
16 {
17 //自定義http頭信息
18 char* headers="Accept:*/*\r\n"
19 "Accept-Language:zh-cn\r\n"
20 "User-Agent:VCTestClient\r\n";
21 CString m_strHTML;
22 try
23 {
24 CInternetSession sess;//建立會話
25 CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));//打開文件
26 注意:OpenURL 方法的dwFlags參數 必須選擇傳輸模式為INTERNET_FLAG_TRANSFER_ASCII 或者 INTERNET_FLAG_TRANSFER_BINARY
27 CString szData,szAllData;
28 while(pF->ReadString(szData))
29 {
30 //讀取文件
31 szAllData+="\r\n";
32 szAllData+=szData;
33 }
34 pF->Close();
35 sess.Close();
36 m_strHTML=szAllData;
37 }
38 catch(CException *e)
39 {
40 AfxMessageBox("獲取數據失敗");
41 }
42 return m_strHTML;
43 }
-------------------------------------------------------------------------------------------------------------------------------------
// 顯示圖片, lpstrImgUrl 為圖片URL地址,hWnd 為窗口句柄
HRESULT CBMPDlg::ShowPic(char *lpstrImgUrl,HWND hWnd)
{
HDC hDC_Temp=::GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
DWORD dwFileSize,dwByteRead;
char* headers = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*"
"Accept-Encoding: gzip, deflate\r\n"
"Accept-Language: zh-CN\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Cache-Control: no-cache\r\n";
//讀取網頁上圖片文件,實際是個CHttpFile指針
CInternetSession session("HttpClient");
DWORD dwFlags = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE;
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl,1,dwFlags,headers,strlen(headers));//1,dwFlags
if (httpFile!=INVALID_HANDLE_VALUE)
{
char achQueryBuf[32];
DWORD dwQueryBufLen = sizeof(achQueryBuf);
CHttpFile * pHF = (CHttpFile*)httpFile;
pHF->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, achQueryBuf, &dwQueryBufLen, NULL);
dwFileSize = (DWORD)atol(achQueryBuf);
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;
}
}
// 顯示圖片, 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;
}
}
HRESULT CBMPDlg::ShowPic(char *lpstrImgUrl,HWND hWnd)
{
HDC hDC_Temp=::GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
DWORD dwFileSize,dwByteRead;
char* headers = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*"
"Accept-Encoding: gzip, deflate\r\n"
"Accept-Language: zh-CN\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Cache-Control: no-cache\r\n";
//讀取網頁上圖片文件,實際是個CHttpFile指針
CInternetSession session("HttpClient");
DWORD dwFlags = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE;
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl,1,dwFlags,headers,strlen(headers));//1,dwFlags
if (httpFile!=INVALID_HANDLE_VALUE)
{
char achQueryBuf[32];
DWORD dwQueryBufLen = sizeof(achQueryBuf);
CHttpFile * pHF = (CHttpFile*)httpFile;
pHF->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, achQueryBuf, &dwQueryBufLen, NULL);
dwFileSize = (DWORD)atol(achQueryBuf);
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;
}
}
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;
}
}