• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 请教高手??CRichEditCtrlole图片另存为?

请教高手??CRichEditCtrlole图片另存为?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了请教高手,请教电脑高手,请教word高手,虚心请教的图片,请教图片等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请教高手??CRichEditCtrl ole 图片另存为?
描述:

网上找了段代码,也是没有解决的
GetObject获取的ole对象如何判断是否为图片,这对象又怎么保存到HBITMAP或写成文件??
-------------------------------------------------------------------------------
IRichEditOle* pRichEditOle = m_reView.GetIRichEditOle(); 
REOBJECT  reobject; 
ZeroMemory(&reobject,sizeof(REOBJECT)); 
reobject.cbStruct = sizeof(REOBJECT); 
pRichEditOle->GetObject(REO_IOB_SELECTION,&reobject,REO_GETOBJ_POLEOBJ); 
IDataObject  *pDataObject;
reobject.poleobj->GetClipboardData(0,&pDataObject);
FORMATETC  fm; 
STGMEDIUM  sm; 
if(pDataObject)
pDataObject->GetData(&fm,  &sm); 
//CImage.Attach((HBITMAP)sm.hBitmap);
CFileDialog  fileDlg(false,
0,
0,
OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,
        TEXT("图像文件(*.jpg)|*.jpg |图像文件(*.bmp)|*.bmp ||"));
if(fileDlg.DoModal()==IDOK)
{
if(fm.cfFormat == CF_BITMAP)
{
    //保存图片SaveBitmap(sm.hBitmap,fileDlg.GetPathName());
}
} 


解决方案1:

引用 7 楼 happyparrot 的回复:
这里有解答:
http://social.microsoft.com/Forums/cs-CZ/visualcpluszhchs/thread/989ccf75-95f5-4e4f-b102-db5085e11ade
是蒋晟的回复哦。

太感谢了,我成功了..
分享一下代码,我把这个功能写成一个成员函数,放在我继承的CRichEditEx里面,
void CRichEditEx::SaveBitmap(int nIndex, LPCTSTR lpFileName)
{
REOBJECT reobject;  
ZeroMemory(&reobject,sizeof(REOBJECT));  
reobject.cbStruct = sizeof(REOBJECT);  
m_lpRichEditOle->GetObject(/*REO_IOB_SELECTION*/nIndex,&reobject,REO_GETOBJ_POLEOBJ);
IDataObject *pDataObject;   
if (S_OK != reobject.poleobj->QueryInterface(IID_IDataObject, (void **)&pDataObject))
{
MessageBox(_T("获取数据失败!"));
return;
}
//IDataObject *pDataObject;
//reobject.poleobj->GetClipboardData(0,&pDataObject);
FORMATETC fm;  
STGMEDIUM sm;  
sm.tymed = TYMED_GDI;    // Storage medium = HBITMAP handle
sm.pUnkForRelease = NULL; // Use ReleaseStgMedium
fm.cfFormat = CF_BITMAP;    // Clipboard format = CF_BITMAP
fm.ptd = NULL;       // Target Device = Screen
fm.dwAspect = DVASPECT_CONTENT;   // Level of detail = Full content
fm.lindex = -1;       // Index = Not applicaple
fm.tymed = TYMED_GDI;  
if(pDataObject)
pDataObject->GetData(&fm, &sm);
CImage image;
image.Attach(sm.hBitmap);
image.Save(lpFileName);
::ReleaseStgMedium(&sm);
}

解决方案2:

这里有解答:
http://social.microsoft.com/Forums/cs-CZ/visualcpluszhchs/thread/989ccf75-95f5-4e4f-b102-db5085e11ade
是蒋晟的回复哦。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 请教directx的问题,高手请进÷÷÷÷÷÷
  • COM初始化,请教高手,能系统介绍一下原理,谢谢了,
  • COM初始化,请教高手,能系统介绍一下原理,谢谢了!!!
  • 请教高手,关于海明码的检验位是如何计算的,有何规则讲解OK,马上结贴
  • COM高手请教
  • 请教高手VC中在程序主窗口中如何移动DataList这个ActiveX控件窗口,MoveWindow失效了
  • 请教高手,如何在SDK程序中使用Flash控件,请高手帮帮忙!
  • 请教高手们一个非常非常难的问题
  • 请教高手,怎样调试DeskBand?难道要装ie的Debug版本?
  • 请教高手该如何解决这个难题?

相关文章

  • 2017-06-04 哪里可以找到关于com的文章,急!
  • 2017-06-04 vs2015中MicrosoftVsHubServerHttpHostexe进程干什么用的?
  • 2017-06-04 控件中的无模式对话框上的Edit框问题!
  • 2017-06-05 activex出错
  • 2017-06-04 请问,如何让客户端自动下载安装并注册ActiveX控件
  • 2017-06-04 MMCSnap-in如何调试?
  • 2017-06-04 Embed在vc中的word怎么让它不可编辑。
  • 2017-06-05 后台要长时间进行数据处理,如何加上进度条,不使界面象死了一样
  • 2017-06-04 ASP调用COM组件出错
  • 2017-06-04 vc中调用atl问题,急啊!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • VC/MFC利用cookie可以get信息,不能post,怎么回事儿啊,高手帮帮忙
    • 怎么把VC做的小型电子词典系统打包成一个安装程序,要用到数据库?
    • 在线等待为什么在dll里用DialogBox函数的对话框显示不出来
    • xp系统下vs2005做好的release版的com控件,在win2000下注册不成功
    • 如果在一个线程中存在内存泄漏,那么在此线程退出后是否还继续存在内存泄漏?
    • 关于MSVCRTDLL和MSVCRTDDLL的疑惑??
    • 当鼠标点击弹出的窗口时,原窗口的选中文字不再处于选中状态
    • asp调用vc6的写的com组件是个DLL,请问如何debug这个dll?
    • StreamOut的问题
    • 希望有谁能提供点关于C++写图片浏览器的相关知识

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有