导航:首页 > 编程语言 > 在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

友情链接