社区
界面
帖子详情
CRichEditView 中插入图片问题 急!
Jackxan
2013-12-20 10:42:13
小弟在处理CRichEditView 中插入图片时 采用了下面链接里面的方法,图片插入倒是成功了
而且支持多种图片格式
http://www.codeproject.com/Articles/10995/An-example-editor-with-table-and-image-support
但是最后发现一个问题,就是在关闭文档时:出现如下错误:
有人能帮帮我吗 先谢过了!
...全文
185
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
打赏
举报
回复
单步调试跟踪一下。是不是没有做释放处理等
CRich
Edit
View
显示行号的代码
在本文
中
,我们将详细介绍如何在
CRich
Edit
View
中
显示行号,并提供相应的代码实现。 标题解释 标题“
CRich
Edit
View
显示行号的代码”表明本文的主题是关于在
CRich
Edit
View
中
显示行号的代码实现。 描述解释 描述...
CRich
Edit
图片插入复制,RTF格式文件独写,TAB健处理等
在
CRich
Edit
中
插入图片
通常涉及到以下步骤: 1. 将图片转换为RTF兼容的二进制数据,这可能需要使用`OLE`或`COleDataSource`类。 2. 使用`EM_STREAMIN`消息将转换后的二进制数据流送入
CRich
Edit
控件,这可以通过`...
MFC rich
edit
,可进行
插入图片
、表情,有聊天气泡,与QQ非常类似
在这个特定的场景
中
,我们讨论的是MFC
中
的富文本编辑控件(Rich
Edit
Control),它允许用户编辑和格式化文本,而且还能实现更高级的功能,如
插入图片
和表情,以及创建类似QQ聊天应用
中
的聊天气泡。 Rich
Edit
控件...
CHtml.rar_
CRich
Edit
view
_
edit
control format
CRich
Edit
View
保存文本和文本的格式化特征。
CRich
Edit
Doc保持视
中
的客户项的列表。
CRich
Edit
CntrItem支持从容器方对OLE客户项的访问。文本可以被赋予字母或段落的格式化,也可以包括嵌入的OLE对象。带格式编辑控件为...
VC
中
Rich
Edit
读取保存rtf文件
在本文
中
,我们将深入探讨如何在VC
中
使用Rich
Edit
控件来处理RTF文件,包括读取、显示和保存带有图片的RTF内容。 首先,要使用Rich
Edit
控件,你需要包含`#import <msft
edit
.dll>`头文件,并引用`riched20.lib`库。...
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章