社区
界面
帖子详情
CRichEditView 中插入图片问题 急!
Jackxan
2013-12-20 10:42:13
小弟在处理CRichEditView 中插入图片时 采用了下面链接里面的方法,图片插入倒是成功了
而且支持多种图片格式
http://www.codeproject.com/Articles/10995/An-example-editor-with-table-and-image-support
但是最后发现一个问题,就是在关闭文档时:出现如下错误:
有人能帮帮我吗 先谢过了!
...全文
254
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写作的巨大优点:专注于写作本身而不是排版。很多博客、内容平台(包括头条号)都支持Markdown写作语法了。今天我们就来了解一下Markdown。一、什么是MarkdownMarkdown 是一种轻量级标记语言,它允许人们使用易读、易写的纯文本格式编写文档。于 2004 由约翰·格鲁伯(英语:John Gruber)创建。Markdown 编写的文档可以导出 HTM...
crich
edit
view
实现语法高亮和行号_Markdown语法详解及工具介绍
一、快捷键加粗 Ctrl + B斜体 Ctrl + I引用 Ctrl + Q插入链接 Ctrl + L插入代码 Ctrl + K
插入图片
Ctrl + G提升标题 Ctrl + H有序列表 Ctrl + O无序列表 Ctrl + U横线 Ctrl + R撤销 Ctrl + Z重做 Ctrl + Y二、基本语法(一)对字体设置斜体、粗体、删除线,语法如下:*这里是文字*_这里是文字_**这里是文字*...
【MFC视图类大集合:从“基础款”到“高级定制”,选对“画布”事半功倍!】
MFC视图类全面解析:从基础画布到智能表单 MFC提供了丰富的视图类,如同不同功能的"画布",帮助开发者快速构建应用界面。本文系统介绍了7种常用视图类:C
View
(基础白纸)、CScroll
View
(带滚动条)、CForm
View
(表单布局)、CTree
View
(树形结构)、CList
View
(表格数据)、C
Edit
View
(文本编辑)和
CRich
Edit
View
(富文本)。每种类都有明确的适用场景和使用方法,配合关键函数讲解和比喻说明(如把CScroll
View
比作"可卷轴画
CRich
Edit
Ctrl使用大全
很不错的源代码http://www.pudn.com/search_db.asp?keyword=MyRich
Edit
&x=36&y=16rich
edit
常见使用
问题
一.常见
问题
a.可以编译,不能执行的在需要在相应的对话框
中
加上InitInstance(void)函数
中
添加AfxInitRich
Edit
();b.升级默认的Riched版本(默认的有一些bug),如可在Init
html设置字体facename,
CRich
Edit
Ctrl 超文本编辑 [转]
一.常见
问题
a.可以编译,不能执行的AfxInitRich
Edit
();b.升级默认的Riched版本(默认的有一些bug)可在InitInstance
中
添加LoadLibrary("RICHED20.DLL")最后注意 FreeLibrary如果是
CRich
Edit
View
基类的可用BOOL CXXXXXX
View
::PreCreateWindow(CREATESTRUCT& cs){/...
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章