当前位置:主页 > 控件文档
MFC应用程序中浏览PDF、Word文件
日期:2018-01-06 浏览量:

  摘要: 本文主要介绍了一种在MFC应用程序中实现起来比较方便的浏览PDF、Word格式文档文件的方法,同时给出了具体的编程步骤和较详细的实现代码。

  概述

 
 
  随着网络技术的迅速发展,越来越多的电子图书资料能够更加方便的从网上被检索、下载。其文件格式也不仅限于HTML格式的Web页,PDF、Word等多种格式也逐渐成为网络资料交换的主流文件格式。尤其在一些科研、技术类网站,有相当数量的科技文献都是以上述格式来发布的,而且从传统习惯上大多数科研人员也更倾向于阅读PDF或Word格式的文献资料。

  虽然使用Acrobat Reader和Word等专用软件能够比较方便的阅读上述格式的资料文件,但如果需要在自己编写的应用程序中打开上述格式文档仍免不了自己动手进行处理。有多种途径可以实现此目的:通过创建子进程直接调用外部Acrobat Reader或Word应用程序打开指定文档;使用COM自动化技术在应用程序中嵌入Acrobat Reader或Word而打开指定文档;使用合适的ActiveX控件等等。其中,第一种方法是在应用程序之外打开文档,会使程序显的不是很“专业”,第二种方法同样会在打开文档而使嵌入对象处于现场激活状态时将Acrobat Reader或Word程序控制菜单嵌入到自己的程序当中,而在许多情况下这并不是我们所希望的。本文将针对最后一种方式,即通过对“Microsoft Web浏览器”ActiveX控件的使用而在应用程序中完成对PDF、Word格式文档文件的打开、显示。当用户用以该方法编写的应用程序在打开这些格式文档文件时将不再感觉是在Acrobat Reader或Word程序中的浏览。

  控件的创建

  “Microsoft Web浏览器”控件随Visual C++开发环境一起安装到系统。从“Project”菜单下“Add To Project”弹出菜单的“Components and Controls…”子菜单弹出“Components and Controls Gallery”对话框,进入“Registered ActiveX Controls”目录并选中“Microsoft Web浏览器”控件,点击“Insert”按钮将其添加到VC++开发环境的控件工具栏中。

  通常对ActiveX控件的使用多是在资源视图中将指定的ActiveX控件拖拽到相应的对话框中,并完成对其属性的设置和对事件处理函数的添加。但由于本程序应用“Microsoft Web浏览器”控件的目的是为了浏览PDF和Word等格式的文档,因此应用程序框架采取多文档视图结构比较合适,在这种情况下显然不能再以传统方式创建控件而应通过代码来完成动态创建。

  在将 “Microsoft Web浏览器”控件插入到工程后,派生于CWnd类的CWebBrowser2类被添加到工程,它提供了一个可供重载使用的虚函数Create()和一个类成员函数Create():

virtual BOOL Create(LPCTSTR lpszClassName,LPCTSTR lpszWindowName,DWORD dwStyle,const RECT& rect,CWnd* pParentWnd, UINT nID,CCreateContext* pContext = NULL);
BOOL Create(LPCTSTR lpszWindowName,DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL);
 

  通过该函数将可以象动态创建编辑框、按钮等标准控件一样动态创建。这里需要特别指出的是,一个“Microsoft Web浏览器”控件只能负责对一个文档的维护,也就是说,在多文档结构的本程序中需要为每一个打开的文档分配一个“Microsoft Web浏览器”控件以进行管理。这在具体实施上,只需在文档或视图类中声明CWebBrowser2类对象即可。下面这段代码在视图类完成,在OnInitialUpdate()函数更新视图时完成对控件的动态创建,创建的控件将占据视图的全部客户区:

CWebBrowser2 m_Web;
……
// 得到客户区
CRect rect;
GetClientRect(&rect);
// 创建控件窗体
m_Web.Create(NULL, WS_CHILD | WS_VISIBLE, rect, this, ID_WORD);
 

1

作者:郎锐责任编辑:方舟)

天极新媒体 最酷科技资讯

扫码赢大奖

评论

* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!

    相关文章:
    ·葡萄城发布新报表控件ActiveReports 9
    ·我的世界籽岷的PE0.16最新Addons插件功能详解
    ·SmartThings发布新控件 将支持三星多款智能家居产
    ·重大更新!ActiveReports报表控件正式发布V11版本
    ·最新版iTunes上线 新增自己的通知中心控件
    → 特别推荐
    葡萄城发布新报表控
    我的世界籽岷的PE0.
    SmartThings发布新控件
    重大更新!ActiveRepo
    最新版iTunes上线 新增
    新一代JavaScript控件
    车主需下载新控件选
    免费试用并提供技术
    坦克世界9.15黑科技最
    Flash控件安装程序
    ie activex控件11.3最新版
    Adobe Flash Player 官方下
    ActiveX控件下载 官方版
    iPhone 8就这样了!一比
    瑞星:病毒伪装“交
    → 热点TOP10
    中国农业银行
    懒人福音 帮会
    久其表格OCX控
    迎来五周年的
    桌面时钟有新
    抄底好机会最
    《剑网3》新版
    ActiveReports报表
    剑网3剑心插件
    wordpress自动升

    友情链接/网站合作咨询: