• 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 > MFCATL关于导出到word的代码不理解。请高手帮忙!!

MFCATL关于导出到word的代码不理解。请高手帮忙!!

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

佚名通过本文主要向大家介绍了辐射4改装高手代码,代码高手,找个黑客高手帮忙,求高手帮忙盗号,求ps高手帮忙等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: MFC ATL 关于导出到word的代码不理解。请高手帮忙!!
描述:

/////////////////////////////////////////////////////////////////////////////
// 功能: 将瀑布图导出到WORD中
// 参数:
// 返回: void
/////////////////////////////////////////////////////////////////////////////
void CIFClientFallChat3DCtrl::ExportToWord(LPDISPATCH pDoc, LPDISPATCH pSelection, const VARIANT FAR& valExportSet) 
{
Word::SelectionPtr selection(pSelection);//?这些打了问号的,就是问这行代码是什么意思,没有打问号的是自己的理解也不知道对不对
Word::_DocumentPtr doc(pDoc);//?
CDC otherDC;
CBitmap otherBitmap;
CBitmap * poldBitmap;
selection->InsertAfter(_T("\n"));//这个是插入回车。是在什么后面(有after我猜应该是在什么后面插入)插入呢?
if (ReverseBitmap(m_pMemDC, m_pBitmap, &otherDC, &otherBitmap, &poldBitmap))//翻转位图
{
BOOL f = ::OpenClipboard(m_hWnd);
f = ::EmptyClipboard();
::SetClipboardData(CF_BITMAP, otherBitmap.m_hObject);
f = ::CloseClipboard();
long end = selection->End;//?
Word::RangePtr r(selection->Range);//?
r->Start = end;//?
r->End = end;//?
r->Paste();//?
otherDC.SelectObject(poldBitmap);//选入DC
otherDC.DeleteDC();//释放DC
otherBitmap.DeleteObject();//释放bitmap
selection->Start = r->End;//?
selection->End = r->End;//?
}
}
/////////////////////////////////////////////////////////////////////////////
// 功能: 翻转位图
// 参数: pSourceDC:源位图DC
// pSourceBitmap:源位图
// pDesDC:目标位图DC
// pDesBitmap:目标位图
// ppOldBitmap:原始位图
// 返回: true/false:成功/失败
/////////////////////////////////////////////////////////////////////////////
BOOL CIFClientFallChat3DCtrl::ReverseBitmap(CDC * pSourceDC, CBitmap * pSourceBitmap, CDC * pDesDC, CBitmap * pDesBitmap, CBitmap ** ppOldBitmap)
{
BITMAP bm;
pDesDC->CreateCompatibleDC(pSourceDC);
pSourceBitmap->GetBitmap(&bm);
pDesBitmap->CreateCompatibleBitmap(pSourceDC, bm.bmWidth, bm.bmHeight);//函数创建的位图的颜色格式与由参数hdc标识的设备的颜色格式匹配。
*ppOldBitmap = pDesDC->SelectObject(pDesBitmap);//把位图选入DC
pDesDC->FillSolidRect(0, 0, bm.bmWidth, bm.bmHeight, RGB(255, 255, 255));//Call this member function to fill the given rectangle with the specified 
solid color。
return pDesDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, pSourceDC, 0, 0, SRCINVERT);//用异或显示位图。
}


解决方案1:


学习

解决方案2:

word的com接口介绍,网上肯定有的,自己搜搜吧,呵呵。

解决方案3:

void CIFClientFallChat3DCtrl::ExportToWord(LPDISPATCH pDoc, LPDISPATCH pSelection, const VARIANT FAR& valExportSet) 
{ 
Word::SelectionPtr selection(pSelection);//?这些打了问号的,就是问这行代码是什么意思,没有打问号的是自己的理解也不知道对不对 
Word::_DocumentPtr doc(pDoc);//? 这个应该是可以直接操作文档的对象指针,不过后面没用到,不用管了 
CDC otherDC; 
CBitmap otherBitmap; 
CBitmap * poldBitmap; 
selection->InsertAfter(_T("\n"));//? selection是当前选择的内容,默认应当是最前面,(0,0)。InsertAfter就是插入到当前选择的内容的后面。这里是在选择位置后直接插入一个换行符。 
if (ReverseBitmap(m_pMemDC, m_pBitmap, &otherDC, &otherBitmap, &poldBitmap))//翻转位图 
{ 
BOOL f = ::OpenClipboard(m_hWnd); 
f = ::EmptyClipboard(); 
::SetClipboardData(CF_BITMAP, otherBitmap.m_hObject); 
f = ::CloseClipboard(); 
long end = selection->End;//? 记下选择内容的末尾位置 
Word::RangePtr r(selection->Range);//? 根据意思也能大概猜个差不多啊,初始化一个范围指针
r->Start = end;//? 把范围的开始位置指向选择内容的末尾位置
r->End = end;//? 把范围的末尾位置指向选择内容的末尾位置
r->Paste();//? 前面两句使得这个范围就指向了选择内容的末尾,然后粘贴,也就是在当前选择内容后面插入图片
otherDC.SelectObject(poldBitmap);//选入DC 
otherDC.DeleteDC();//释放DC 
otherBitmap.DeleteObject();//释放bitmap 
selection->Start = r->End;//? 粘贴完后多了一个图片,那么选择内容的指针又要移动了,都移动到粘贴位置的末尾
selection->End = r->End;//? 同上
} 
} 
整体思想就是选择一个范围,然后把选择的内容替换掉,就等于插入。


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

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

  • MFCATL关于导出到word的代码不理解。请高手帮忙!!
  • 求高手,这段代码是不是有错
  • 一段神奇的代码,只能靠高手解决了。代码很好懂,但是结果很神奇
  • 高手进:这样的两段代码执行时如何协调!
  • 请高手看下我这段代码的奇怪问题?
  • 高手看看这段代码为什么不能结束进程?
  • MFCATL关于导出到word的代码不理解。请高手帮忙!!
  • 为什么这段代码不能接收到数据,求高手解答

相关文章

  • 2017-06-05 谁有驱动隐藏文件和服务TCP连接的代码啊急要最好的VC++
  • 2017-06-05 如何在directx下抓屏??
  • 2017-06-05 两个应用程序之间通信方式的选择问题
  • 2017-06-04 两个进程使用COM自动化进行控制,如何通过COM方式在这两个进程间传输比较大的数据?
  • 2017-06-04 flexcell的复选框问题
  • 2017-06-05 求matlab中的Axis,plot等等这些功能用VC怎么实现。。
  • 2017-06-05 自由线程封送拆收器什么意思?//两个线程处理模型是俩个线程之间吗?
  • 2017-06-04 求vsprinter和vsreport完全的安装文件(特别是说明文档和配套设计器)
  • 2017-06-04 MFC对话框网络通信TCP客户端程序用调试助手调试不成功,在主对话框建立的非模态对话框上无法显示传输数据?
  • 2017-06-05 怎么用jquery的代码调用ACtiveX控件的方法~

文章分类

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

最近更新的内容

    • 请问如何自启动?
    • 想明白一个问题:socket中如果使用非阻塞模式,是不是就不用多线程了?
    • 我做的ocx,网页无法调用
    • ObjectArxCOM编程。找不到XXXtlb
    • 我刚学VC++有一个问题要请较高手们
    • 但是为什么首次运行IE,还是要添加可授信站点呢?
    • 64位系统下,编程的问题,请教。
    • 请教进程占有率的问题
    • FPspread表格内容导出到excel
    • Usbkey与gina问题!!!

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

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