社区
界面
帖子详情
CRichEditView 中插入图片问题 急!
Jackxan
2013-12-20 10:42:13
小弟在处理CRichEditView 中插入图片时 采用了下面链接里面的方法,图片插入倒是成功了
而且支持多种图片格式
http://www.codeproject.com/Articles/10995/An-example-editor-with-table-and-image-support
但是最后发现一个问题,就是在关闭文档时:出现如下错误:
有人能帮帮我吗 先谢过了!
...全文
189
4
打赏
收藏
CRichEditView 中插入图片问题 急!
小弟在处理CRichEditView 中插入图片时 采用了下面链接里面的方法,图片插入倒是成功了 而且支持多种图片格式 http://www.codeproject.com/Articles/10995/An-example-editor-with-table-and-image-support 但是最后发现一个问题,就是在关闭文档时:出现如下错误: 有人能帮帮我吗 先谢过了!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jackxan
2013-12-22
打赏
举报
回复
我自己解决了 就是把 IRichEditOle *pRichEditOle;这个指针给释放了就好了 pRichEditOle->Release(); 之前我二的用的是delete!呵呵!
Jackxan
2013-12-20
打赏
举报
回复
贴上其中的关键代码 请大家帮忙看看吧 谢了 void CTapEditorView::OnInsertImage() { // TODO: Add your command handler code here CString sFilter = "All image file|*.bmp;*.jpg;*.gif|Bitmap Files (*.bmp)|*.bmp|JPEG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif|"; CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_READONLY, sFilter); if(dlg.DoModal() == IDOK) { CTapBitmap bmp; if(bmp.Load(dlg.GetPathName())==FALSE) { AfxMessageBox(_T("Could not load image.")); return; } CEnBitmap enBitmap; CBitmap Bitmap; if (enBitmap.Attach(bmp.GetBMP(), 0)) { Bitmap.DeleteObject(); Bitmap.Attach(enBitmap.Detach()); IRichEditOle *pRichEditOle; pRichEditOle = GetRichEditCtrl().GetIRichEditOle(); HBITMAP hBitmap = (HBITMAP)Bitmap; if(hBitmap) { CImageDataObject::InsertBitmap(pRichEditOle, hBitmap); } } } } 其中CImageDataObject是继承自IDataObject void CImageDataObject::InsertBitmap(IRichEditOle* pRichEditOle, HBITMAP hBitmap) { SCODE sc; // Get the image data object // CImageDataObject *pods = new CImageDataObject; LPDATAOBJECT lpDataObject; pods->QueryInterface(IID_IDataObject, (void **)&lpDataObject); pods->SetBitmap(hBitmap); // Get the RichEdit container site // IOleClientSite *pOleClientSite; pRichEditOle->GetClientSite(&pOleClientSite); // Initialize a Storage Object // IStorage *pStorage; LPLOCKBYTES lpLockBytes = NULL; sc = ::CreateILockBytesOnHGlobal(NULL, TRUE, &lpLockBytes); if (sc != S_OK) AfxThrowOleException(sc); ASSERT(lpLockBytes != NULL); sc = ::StgCreateDocfileOnILockBytes(lpLockBytes, STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE, 0, &pStorage); if (sc != S_OK) { VERIFY(lpLockBytes->Release() == 0); lpLockBytes = NULL; AfxThrowOleException(sc); } ASSERT(pStorage != NULL); // The final ole object which will be inserted in the richedit control // IOleObject *pOleObject; pOleObject = pods->GetOleObject(pOleClientSite, pStorage); // all items are "contained" -- this makes our reference to this object // weak -- which is needed for links to embedding silent update. OleSetContainedObject(pOleObject, TRUE); // Now Add the object to the RichEdit // REOBJECT reobject; ZeroMemory(&reobject, sizeof(REOBJECT)); reobject.cbStruct = sizeof(REOBJECT); CLSID clsid; sc = pOleObject->GetUserClassID(&clsid); if (sc != S_OK) AfxThrowOleException(sc); reobject.clsid = clsid; reobject.cp = REO_CP_SELECTION; //reobject.dvaspect = DVASPECT_CONTENT; reobject.dvaspect = DVASPECT_CONTENT; reobject.dwFlags = REO_RESIZABLE ; reobject.poleobj = pOleObject; reobject.polesite = pOleClientSite; reobject.pstg = pStorage; // Insert the bitmap at the current location in the richedit control // pRichEditOle->InsertObject(&reobject); // Release all unnecessary interfaces // pOleObject->Release(); pOleClientSite->Release(); pStorage->Release(); lpDataObject->Release(); }
Jackxan
2013-12-20
打赏
举报
回复
点击“重试”调制断点处,图纸红色出断言失败 m_dwRef的值为2;另外我发现的release模式下没有问题
oyljerry
2013-12-20
打赏
举报
回复
单步调试跟踪一下。是不是没有做释放处理等
如何学好VC
VC 基础教材 张贴人: libo 于 2005-03-21 03:02 PM 1.1 如何学好VC 1.1 如何学好VC 这个
问题
很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了...
600个问与答
常见
问题
总结4在VC
中
如何将数据导入Word
中
、控制远程计算机拨号上网并获取其IP地址、枚举本地-远程NT系统进程 、从PDH
中
取得本地/远程系统进程信息、我在试图做一个dll时,不用def文件不行吗?再一个EXPORTS下面的输...
spring-boot-2.3.0.RC1.jar
中
文-英文对照文档.zip
1、压缩文件
中
包含:
中
文-英文对照文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其
中
的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar
中
文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,
中
文API文档,手册,开发手册,使用手册,参考手册。
presto-jdbc-0.238.1.jar
中
文文档.zip
1、压缩文件
中
包含:
中
文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其
中
的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar
中
文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,
中
文API文档,手册,开发手册,使用手册,参考手册。
Linux_SID_开发指南.pdf
Linux_SID_开发指南
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章