社区
界面
帖子详情
CRichEditView 中插入图片问题 急!
Jackxan
2013-12-20 10:42:13
小弟在处理CRichEditView 中插入图片时 采用了下面链接里面的方法,图片插入倒是成功了
而且支持多种图片格式
http://www.codeproject.com/Articles/10995/An-example-editor-with-table-and-image-support
但是最后发现一个问题,就是在关闭文档时:出现如下错误:
有人能帮帮我吗 先谢过了!
...全文
239
4
打赏
收藏
CRichEditView 中插入图片问题 急!
小弟在处理CRichEditView 中插入图片时 采用了下面链接里面的方法,图片插入倒是成功了 而且支持多种图片格式 http://www.codeproject.com/Articles/10995/An-example-editor-with-table-and-image-support 但是最后发现一个问题,就是在关闭文档时:出现如下错误: 有人能帮帮我吗 先谢过了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
单步调试跟踪一下。是不是没有做释放处理等
crich
edit
view
实现语法高亮和行号_Markdown基本语法详解
本文介绍Markdown这一轻量级标记语言的基本概念及使用方法,包括标题、文本样式、元素分割线、列表、引用、链接、图片、表格等内容。
crich
edit
view
实现语法高亮和行号_Markdown语法详解及工具介绍
本文详细介绍Markdown的基本语法和高级用法,包括快捷键、字体格式、列表、链接、代码块、表格等,以及如何在不同平台上使用Markdown。
【MFC视图类大集合:从“基础款”到“高级定制”,选对“画布”事半功倍!】
本文详细介绍了MFC
中
常见的视图类,包括C
View
、CScroll
View
、CForm
View
、CTree
View
、CList
View
、C
Edit
View
和
CRich
Edit
View
。每种视图类都有其特定用途和应用场景,并通过实例说明如何使用它们进行开发。文章强调根据需求选择合适的视图类可以提高开发效率。
CRich
Edit
Ctrl使用大全
本文详细介绍了Rich
Edit
控件的使用方法,包括常见
问题
解决、函数应用及聊天窗口实现技巧。涵盖字体设置、行间距调整、背景透明处理、内容获取等多种功能,并提供了插入链接、图片及GIF动画的方法。
对话框
中
嵌入RICH
EDIT
View
视图 设置垂直文本
本文详细介绍了如何使用RICH
EDIT
4.1版本的
CRich
Edit
Ctrl控件实现垂直文本显示,包括解决控件版本不兼容的
问题
、创建自定义Rich
Edit
View
类以及将视图嵌入对话框的技术细节。
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章