MFC图片加入

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:27:44
要在窗口中显示一张图片,怎么做?
1)图片x.bmp粘贴到工程文件夹中
2)MyFrame.h
*******
CDC *mdc;
CBitmap *bgbmp;
***********
3)MyFrame.cpp
********
::CMyFrame
******
bgbmp = new CBitmap;
bgbmp->m_hObject = (HBITMAP)::LoadImage(NULL,"x.bmp",IMAGE_BITMAP,640,480,LR_LOADFROMFILE);
mdc->SelectObject(bgbmp);
**********
::OnPaint
*******
dc.BitBlt(0, 0, 640, 480, mdc, 0, 0, SRCCOPY);
***********
~CMyFrame
*****
delete mdc;
delete bgbmp;
以上是我写的步骤,编译没错,运行就不对了,到底漏了什么呢?帮我看看吧
thanks!

很乱,
给你一个,写的很不错
IPicture *m_picture;
OLE_XSIZE_HIMETRIC m_width;
OLE_YSIZE_HIMETRIC m_height;

CString m_filename("G:\\my photo\\照片和视频\\DSC_00516.jpg");//文件名

CFile m_file(m_filename,CFile::modeRead );

//获取文件长度
DWORD m_filelen = m_file.GetLength();

//在堆上分配空间
HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE,m_filelen);

LPVOID pvdata = NULL;
//锁定堆空间,获取指向堆空间的指针
pvdata = GlobalLock(m_hglobal);

//将文件数据读区到堆中
m_file.ReadHuge(pvdata,m_filelen);

IStream* m_stream;

GlobalUnlock(m_hglobal);

//在堆中创建流对象
CreateStreamOnHGlobal(m_hglobal,TRUE,&m_stream);

//利用流加载图像
OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture);

m_picture->get_Width(&m_width);
m_picture->get_Height(&m_height);

CDC* dc = GetDC();

//m_IsShow = TRUE;
CRect rect;