• 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 > UsingCOMinterfacesofMSWordinMFC

UsingCOMinterfacesofMSWordinMFC

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

佚名通过本文主要向大家介绍了 UsingCOMinterfacesofMSWordinMFC等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: Using COM interfaces of MS Word in MFC
描述:

I am writing a COM container using MFC OLE classes. The purpose of the container
is to display and/or print MS Word doc as portion of a bigger display/plot. For
this I am trying to get the Enhance Metafile representation of the word doc 
file using MSWord as COM Server. I have had limited success in the sense that 
only first page of the document is visible in the metafile. Here is what I 
have tried: 
CMyContainerDoc* pDoc = new CMyContainerDoc; //derived from COleDocument 
CMyCtrlItem* pCtrlItem = new CMyCtrlItem(pDoc); //derived from COleClientItem 
pCtrlItem->CreateFromFile("mytestfile.doc"); //path and name of a MS word file 
CSize clientSize; 
BOOL bRet = pCtrlItem->GetCachedExtent(&clientSize, DVASPECT_CONTENT);
HDC hDC = ::CreateEnhMetaFile(NULL, "c:\\drawtest.emf", 0, NULL);
CDC::FromHandle(hDC)->HIMETRICtoLP(&clientSize); 
CRect rect( 0, 0, clientSize.cx, clientSize.cy); 
pCtrlItem->Draw(CDC::FromHandle(hDC), &rect, DVASPECT_CONTENT); 
HENHMETAFILE hMetaFile = CloseEnhMetaFile( hDC ); 
DeleteEnhMetaFile( hMetaFile); 
This results in just the first page of document to be represented in the metafile.
How could I get the whole document in the metafile? 
2. Alternatively, I tried to use GetData function of IDataObject interface . 
It returns success status code, but when I try to use the metafile handle, returned 
through STGMEDIUM structure, it still contains only the first page. Here is the 
relevant code:
FORMATETC fmtetc; 
fmtetc.cfFormat = CF_METAFILEPICT;
fmtetc.dwAspect = DVASPECT_CONTENT; 
fmtetc.ptd = NULL; 
fmtetc.tymed = TYMED_MFPICT;
fmtetc.lindex = -1; 
STGMEDIUM stgMed; 
memset(&stgMed, 0, sizeof(stgMed));
LPDATAOBJECT lpDataObject = 0;
pCtrlItem->m_lpObject->QueryInterface(IID_IDataObject, (void**)&lpDataObject); 
sc = lpDataObject->GetData( &fmtetc, &stgMed ); 
LPMETAFILEPICT pMF = (LPMETAFILEPICT)GlobalLock(stgMed.hEnhMetaFile);
//Draw the picture. 
HDC hDC2 = ::CreateEnhMetaFile(NULL, "c:\\testGetdata.emf", 0, NULL); 
BOOL bRetPlay = PlayMetaFile(hDC2, pMF->hMF); 
GlobalUnlock(stgMed.hEnhMetaFile); 
ReleaseStgMedium(&stgMed);
HENHMETAFILE hMetaFile = CloseEnhMetaFile( hDC2 );
DeleteEnhMetaFile( hMetaFile ); 
Here again, the metafile testGetData.emf contains just the first page of the document. 
Is there something I am missing here? Or if there is another better way of 
achieving the intended results.
Thanks and Regards


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

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

相关文章

  • 2017-06-04 控件嵌入到IE中,接收不到箭头键,怎么办
  • 2017-06-05 OLE与ATL都是c++模板库吗?//有什么区别?
  • 2017-06-05 快疯了!f5不会出错,可ctrl+f5就问题多多,动不动就是各种异常,why,这一般是原因啊?
  • 2017-06-05 求救~!!!
  • 2017-06-04 查询IHTMLDocument2接口失败~
  • 2017-06-05 在线等:FileMapping中的Write保护(类似文件的lock,unlock操作)
  • 2017-06-05 WORD怎么实现格式查找?
  • 2017-06-04 VCOLEWORD,WORD破坏原程序框架!
  • 2017-06-04 在继承CAxDialogImpl这个类的窗口里创建和添加tab页怎么做啊?
  • 2017-06-05 请教高手,关于工作者线程问题

文章分类

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

最近更新的内容

    • 怎样现实sortarrow
    • 请教ocx控件的制作
    • directshow的显示问题
    • VCatlexcelAddOLEObject和获取鼠标点击位置
    • typedefstd::map<CString,PITblSettings>CTableSetingMap;
    • ocx文件的clsid是怎样产生的?
    • 为何用VariantChangeTypeEx将VARIANT时间变量转换为字符串变量只能转换一部分?
    • VS2005升级到VS2012,运行exe报异常c0000409
    • vs2010ATL激活新增的工具条按钮的事件连接点DispEventAdvise失败
    • 看里面,是否会出现内存泄漏

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

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