我想在视图里面显示GIF 和jpg图片等非bmp图片,请问怎么弄啊?
解决方案 »
- 如何获取主机名?
- 当鼠标离开窗口(CWnd)时响应了哪个事件????????????????????急!!!!!!
- 在线等待(能着多得)
- recv时返回错误号10053,是什么意思,应该如何解决,高手帮忙
- List Control能否嵌在窗口中?
- api中的问题 WaitForSingObject()详解
- 请大侠指点迷津:插件的制作
- 高手救我:怎样在 MPEG2 流中抓取图片... ...?
- 请帮忙解释一下扫雷的代码?
- 我用ATL创建了一个Service类型的exe后,在客户端创建用CoCreateInstance创建对象时总是返回0x800401F0("标记没有引用存储"),这是什么原
- 泡CSDN两年多了,才四条裤,大家有什么好的升星方法,散分100
- 存储过程的返回值,如何获取自动生成的id
http://www.codeproject.com/KB/graphics/cximage.aspx
推荐
CXImage
或者
FreeImage
lpszFile:图片文件路径
void LoadPictureFormFile(HDC hdc, LPCTSTR lpszFile, HBITMAP* hBitmap)
{
// open file
HANDLE hFile = ::CreateFile(lpszFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
_ASSERTE(INVALID_HANDLE_VALUE != hFile); // get file size
DWORD dwFileSize = ::GetFileSize(hFile, NULL);
_ASSERTE(-1 != dwFileSize); LPVOID pvData = NULL;
// alloc memory based on file size
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
_ASSERTE(NULL != hGlobal); pvData = GlobalLock(hGlobal);
_ASSERTE(NULL != pvData); DWORD dwBytesRead = 0;
// read file and store in global memory
BOOL bRead = ::ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
_ASSERTE(FALSE != bRead);
GlobalUnlock(hGlobal);
::CloseHandle(hFile); LPSTREAM pstm = NULL;
// create IStream* from global memory
HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
_ASSERTE(SUCCEEDED(hr) && pstm); // Create IPicture from image file
LPPICTURE gpPicture; hr = ::OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID*)&gpPicture); _ASSERTE(SUCCEEDED(hr) && gpPicture);
pstm->Release(); OLE_HANDLE m_picHandle;
gpPicture->get_Handle(&m_picHandle);
*hBitmap = (HBITMAP)m_picHandle;
}
听说有个CImage类很好用,可是我用的是vc6.0里面没有这个类库
通过这篇文章解决问题了,不过还是要谢谢大家的帮忙,特别是5楼的