導航:首頁 > 編程語言 > 在mfc程序中顯示jpg圖像

在mfc程序中顯示jpg圖像

發布時間:2023-07-10 13:32:11

⑴ 在MFC當中,怎麼動態載入圖片(bmp、jpg、gif等),還有就是如果使用picture控制項,代碼該怎麼寫

給你個例子 利用流
工程基於對話框 名字是IPicture 建好工程後 加入下面的代碼 就可以顯示圖片了岩握
// IPictureDlg.h : 頭文件
BOOL DisplayPic(CString strFileName, HWND hWnd, int nScrWidth, int nScrHeight);

// IPictureDlg.cpp : 實現文件
BOOL CIPictureDlg::DisplayPic(CString strFileName, HWND hWnd, int nScrWidth, int nScrHeight)
{
HDC hDC=::GetDC(hWnd);

IPicture *pPicture;
IStream *pStream;

HRESULT hResult;

HANDLE hFile = NULL;
DWORD dwFileSize,dwByteRead;

hFile = CreateFile(strFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile == INVALID_HANDLE_VALUE)
{
return E_FAIL;
}

dwFileSize = GetFileSize(hFile, NULL);

HGLOBAL hGlobal = ::GlobalAlloc(GHND, dwFileSize);
if(hGlobal == NULL)
{
AfxMessageBox("圖形文件裝載出錯!");
return E_FAIL;
}

LPVOID lpData = NULL;

lpData = ::GlobalLock(hGlobal);

ReadFile(hFile, lpData, dwFileSize, &dwByteRead, NULL);
::GlobalUnlock(hGlobal);

if(CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) != S_OK)
{
AfxMessageBox("流初始化失粗源慶敗!");
return E_FAIL;
}

hResult = OleLoadPicture(pStream, dwFileSize, TRUE, IID_IPicture, (LPVOID*) &pPicture);

if(FAILED(hResult))
{
AfxMessageBox("圖形文件裝載出錯!");
return E_FAIL;
}

OLE_XSIZE_HIMETRIC hmWidth;//圖片的真實寬度
OLE_YSIZE_HIMETRIC hmHeight;//圖片的真實高度
pPicture->get_Width(&hmWidth);
pPicture->get_Height(&hmHeight);

//將圖形輸出到屏幕
hResult = pPicture->Render(hDC, 0, 0, nScrWidth, nScrHeight, 0, hmHeight, hmWidth, -hmHeight, NULL);

CloseHandle(hFile);//關閉打開的文件

pPicture->Release();
// Free memory.
::GlobalFree(hGlobal);

if (SUCCEEDED(hResult))
{
return S_OK;
}
else
{
AfxMessageBox("圖形文件裝載出錯!");
return E_FAIL;
}
}

void CIPictureDlg::OnBnClickedOk()
{
// TODO: 在此添加控制項通知處理裂仿程序代碼
static char szFilter[] = "JPG Files (*.jpg)|*.jpg|BMP Files (*.bmp)|*.bmp|GIF Files (*.gif)|*.gif|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE, "BMP", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
if(dlg.DoModal() != IDOK)
return;

CRect rect;
GetDlgItem(IDC_STATIC)->GetWindowRect(rect);
DisplayPic(dlg.GetPathName(),GetDlgItem(IDC_STATIC)->GetSafeHwnd(), rect.Width(), rect.Height());
}

閱讀全文

與在mfc程序中顯示jpg圖像相關的資料

熱點內容
6s手機自帶的程序 瀏覽:408
剪輯和編程哪個作為副業 瀏覽:302
js可以隱藏頁面的div嗎 瀏覽:398
哪裡可以查自己車輪轂孔距數據 瀏覽:303
中央文件在哪裡可以找到 瀏覽:456
港劇那個app 瀏覽:107
excel按照名稱放入對應文件夾 瀏覽:538
毒葯app現狀 瀏覽:343
換蘋果屏幕視頻教程5S 瀏覽:900
手機excel表格改文件名 瀏覽:852
迅雷vip診斷工具 瀏覽:436
網路盒子光纖g紅燈什麼意思 瀏覽:62
office2003視頻教程全集 瀏覽:31
商品文件格式 瀏覽:610
u盤中病毒文件結尾變成exe怎麼辦 瀏覽:889
sql注入jsky 瀏覽:638
桌面視頻文件地址怎麼復制 瀏覽:531
資料庫怎麼查重復的數據 瀏覽:666
離線百科資料庫有哪些 瀏覽:974
禁止訪問php文件類型 瀏覽:39

友情鏈接