WEB开发网
开发学院软件开发VC 在C++中用ActiveX控件显示PDF文件 阅读

在C++中用ActiveX控件显示PDF文件

 2010-06-15 20:39:59 来源:WEB开发网   
核心提示:实现步骤以下以Acrobat(Reader)5.x/6.x为例,介绍如何用新版控件实现PDF文件的显示,在C++中用ActiveX控件显示PDF文件(2),运行VC,新建一个基于对话框的MFC应用程序ViewPDF,选择要显示的PDF文件CFileDialog dlg(TRUE);if (dlg.DoModal() =

实现步骤

以下以Acrobat(Reader)5.x/6.x为例,介绍如何用新版控件实现PDF文件的显示。

运行VC,新建一个基于对话框的MFC应用程序ViewPDF,在设置生成选项时,选中“ActiveX Controls”,其余使用缺省值即可。生成后,删除对话框中的所有控件。

接下来创建自动化组件驱动类:打开类向导,点击“Add Class”按钮,在弹出的菜单中选择“From a type library”,用类型库文件pdf.tlb产生所需的组件类,该文件位于Acrobat软件安装目录下的ActiveX子目录。

编辑ViewPDFDlg.h,为类CViewPDFDlg添加两个数据成员:

#include "pdf.h" // 组件类的头文件
class CViewPDFDlg : public CDialog
{
 protected:
  _DPdf m_drvPDF; // PDF组件驱动对象,_DPdf是我们刚生成的组件类
  CWnd m_wndPDF; // PDF控件窗口
  ... ...

在类成员函数CViewPDFDlg::OnInitDialog中插入下列语句:

// 为主窗口添加WS_CLIPCHILDREN风格,否则控件显示不正常
ModifyStyle(0, WS_CLIPCHILDREN);
// 获取对话框的客户区矩形
CRect rt;
GetClientRect(&rt);
// 利用CWnd::CreateControl创建PDF控件窗口
// Acrobat (Reader) 5.x/6.x的控件类ID为"PDF.PdfCtrl.5",7.x为"AcroPDF.PDF.1"
m_wndPDF.CreateControl("PDF.PdfCtrl.5", NULL, WS_CHILD | WS_VISIBLE, rt, this, 0);
// 获取IDispatch接口指针
LPUNKNOWN lpUnknown = m_wndPDF.GetControl Unknown();
LPDISPATCH lpDispatch;
lpUnknown->QueryInterface(IID_IDispatch, (void**)&lpDispatch);
// 把获得的接口指针传递给组件驱动对象m_drvPDF,通过它调用控件的属性和方法
// 当m_drvPDF销毁时,会自动释放接口指针
m_drvPDF.AttachDispatch(lpDispatch);
// 弹出一个“打开”对话框,选择要显示的PDF文件
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
 // 利用控件的方法LoadFile读取并显示PDF文件
 m_drvPDF.LoadFile(dlg.GetPathName());
else
 OnCancel(); // 退出

编译运行程序,选择要显示的PDF文件,效果如图1所示。

图1

Tags:中用 ActiveX 控件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接