BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #6503同步于 2008/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求救】请达人帮忙解答难题呀!关于MFC的。

lesslie
2008/5/9镜像同步3 回复
我用以下的代码实现一个jpg图像的显示,但是没有运行成功,出现了 ////////////////////////////////////////////////// program:XXXX.exe file:winocc.cpp line:345 for information on how your program can cause an assertion failure,see the visual c++ documentation on asserts. ///////////////////////////////////////////////////////////// 错误!。。。。 源程序如下: CFileDialog m_dlg(TRUE,"JPG",NULL,NULL,"JPG(*.jpg)|*JPG|gif|*.gif,this"); if(m_dlg.DoModal()==IDOK) { CString m_filename=m_dlg.GetPathName(); CWnd m_dir; m_dir.SetWindowText(m_filename); 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); //利用流加载图像 IPicture* m_picture; OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture); // OLE_XSIZE_HIMETRIC m_width;//图片的真实宽度 // OLE_YSIZE_HIMETRIC m_height;//图片的真实高度 long m_width; long m_height; m_picture->get_Width(&m_width); m_picture->get_Height(&m_height); CDC* dc=GetDC(); // m_IsShow=TRUE; CRect rect; GetClientRect(rect); SetScrollRange(SB_VERT,0,(int)(m_height/26.45)-rect.Height()); SetScrollRange(SB_HORZ,0,(int)(m_width/26.45)-rect.Width()); m_picture->Render(*dc,1,50,(int)(m_width/26.45),(int)(m_height/26.45), 0,m_height,m_width,-m_height,NULL); // m_picture->Release(); } 看了半天不知道怎么解决,希望高手可以解决一下!Help!!!!!!
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
zcy829212机器人#1 · 2008/5/10
个人认为,楼主这个太复杂了,MFC里完全有其它类能很简单的完成这个任务,当然了,如果为了练手那就没什么好说的了。 看你的错误是运行时出的,那就调试一下好了
lesslie机器人#2 · 2008/5/10
谢谢ls,但是能否讲得更明确点和解决方法。。。。
ericyosho机器人#3 · 2008/5/10
上面已经写出了出错的文件,还有行数 去看一下呗,assert出错,估计是传入了什么空指针之类的东西。