社区
界面
帖子详情
CRichEditView 中插入图片问题 急!
Jackxan
2013-12-20 10:42:13
小弟在处理CRichEditView 中插入图片时 采用了下面链接里面的方法,图片插入倒是成功了
而且支持多种图片格式
http://www.codeproject.com/Articles/10995/An-example-editor-with-table-and-image-support
但是最后发现一个问题,就是在关闭文档时:出现如下错误:
有人能帮帮我吗 先谢过了!
...全文
186
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
图片插入复制,RTF格式文件独写,TAB健处理等
开发一个项目需要用到一个
CRich
Edit
控件,基于vs2019的
CRich
Edit
图片插入复制,RTF格式文件独写,TAB健处理等需要的功能都有了。
MFC rich
edit
,可进行
插入图片
、表情,有聊天气泡,与QQ非常类似
MFC rich
edit
,可进行
插入图片
、表情,有聊天气泡,与QQ非常类似
CHtml.rar_
CRich
Edit
view
_
edit
control format
CRich
Edit
View
保存文本和文本的格式化特征。
CRich
Edit
Doc保持视
中
的客户项的列表。
CRich
Edit
CntrItem支持从容器方对OLE客户项的访问。文本可以被赋予字母或段落的格式化,也可以包括嵌入的OLE对象。带格式编辑控件为格式化文本提供了设计界面。但是,应用程序必须实现需要的用户部件,以使格式化操作对用户来说可用。
VC
中
Rich
Edit
读取保存rtf文件
VC源码,可以实现读取rtf格式文件并显示在Rich
Edit
文本框
中
,同时也可以保存在制定的rtf文件
中
,内容可以有文本及图片
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章