读书人

在VC图片控件显示固定图片程序如何设计

发布时间: 2012-12-15 15:16:03 作者: rapoo

在VC图片控件显示固定图片程序怎么设计?
现有程序是点击输入,自己选择图片,如何改成点击自动出来程序里已经选好的图片?
程序如下

//*****************************************************************************
// 显示JPEG格式图片
//*****************************************************************************
BOOL CPictureDlg::DisplayPicture(LPCTSTR lpszFileName)
{
CFile file;
if(!file.Open(lpszFileName, CFile::modeRead)) return FALSE;

//得到文件大小
DWORD dwSize = file.GetLength();

//分配内存
HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, dwSize);
if(hMem == NULL) return FALSE;

//锁定内存
LPVOID pDes = ::GlobalLock(hMem);
if(pDes == NULL)
{
::GlobalFree(hMem);
return FALSE;
}

//读文件到内存
file.ReadHuge(pDes, dwSize);

//关闭文件,解锁内存块
file.Close();
GlobalUnlock(hMem);

//创建一个IStream接口指针,用来保存图片流
IStream* pIStream = NULL;
CreateStreamOnHGlobal(hMem, TRUE, &pIStream);

//如果pIPicture不为空, 先释放pIPicture
if(pIPicture != NULL) pIPicture->Release();

//用OleLoadPicture获得IPicture接口指针
if(!SUCCEEDED(OleLoadPicture(pIStream, dwSize, TRUE, IID_IPicture, (LPVOID*)&pIPicture)))
{
pIStream -> Release();
::GlobalFree(hMem);

return FALSE;
}

GlobalFree(hMem); //释放全局内存
pIStream->Release(); //释放pIStream  

OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;

//用接口方法获得图片的宽和高
pIPicture->get_Width(&hmWidth);
pIPicture->get_Height(&hmHeight);

//保存图像大小
m_size.cx = hmWidth;
m_size.cy = hmHeight; //保存图像大小

//窗口重绘,用于在PAINT里显示图像
Invalidate();

return TRUE;
}


void CPictureDlg::OnButtonLoad()
{
CStdioFile file;
CString strName;

CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, _T("JPEG图像文件(*.jpg)|*.jpg|全部文件(*.*)|*.*||"), AfxGetMainWnd());

if(dlg.DoModal() == IDOK)
{
//得到文件名
strName = dlg.GetPathName();

//显示图像
DisplayPicture(strName);
}
}

[最优解释]
void CPictureDlg::OnButtonLoad()
{
CStdioFile file;
CString strName = "x:\\xxxxxxx";//你需要的文件路径
//显示图像
DisplayPicture(strName);
}

读书人网 >VC/MFC

热点推荐