首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

從零打造 PDF 電子書瀏覽器:ActiveX 控件整合完整教學

     編輯:關於VC++

本文不僅教你建立一個 PDF 閱讀器,更著重示範如何在 MFC 專案中正確整合 ActiveX 控件——以 Adobe Acrobat Control for ActiveX 為例。掌握此流程後,你同樣能嵌入 Flash、Windows Media Player、RealPlayer 等控件,快速開發多媒體播放器。

必要條件與版本限制

  • 必須安裝 Adobe Acrobat 4.0 或更早版本。實測 Acrobat 5.0/6.0 提供的 ActiveX 控件無法正常加入 VC 6.0 專案。
  • 開發環境:Visual C++ 6.0,對話框基礎專案。

步驟 1:建立專案並啟用 ActiveX 支援

AppWizard 建立對話框專案時,第二步務必勾選 "ActiveX Controls",否則後續需手動補充大量樣板碼。

步驟 2:註冊並插入 Acrobat 控件

  1. 專案功能表 → Add To Project → Components and Controls → Registered ActiveX Controls。
  2. 雙擊清單中的 "Acrobat Control for ActiveX",按 Insert → OK。
  3. ClassWizard 會自動產生對應的包裝類別 CPdf(對應 pdf.h)。

步驟 3:建立選單與開啟檔案功能

  • 在 ResourceView 新增選單資源,加入「開啟」項目(ID: ID_OPEN_PDFFILE),取消 Pop-up 勾選。
  • 用 ClassWizard 對應 OnOpenPdffile 訊息處理函式。
  • 在對話框類別加入成員變數 CPdf m_PdfFile;,並在 PdfReaderDlg.h 引入 #include "pdf.h"。
void CPdfReaderDlg::OnOpenPdffile()
{
    char szFileFilter[] = "PDF File(*.pdf)|*.pdf|All File(*.*)|*.*||";
    CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_EXPLORER, szFileFilter, this);
    if (dlg.DoModal() == IDOK)
    {
        CString path = dlg.GetPathName();
        m_PdfFile.LoadFile(path);          // 載入 PDF
        SetWindowText("正在閱讀:" + dlg.GetFileTitle()); // 更新標題列
    }
}

步驟 4:在 WM_CREATE 中建立控件視窗

關鍵步驟!若略過此步,呼叫 LoadFile 時會觸發系統錯誤。

int CPdfReaderDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialog::OnCreate(lpCreateStruct) == -1) return -1;
    CRect rect; GetWindowRect(&rect);
    m_PdfFile.Create(NULL, WS_VISIBLE, rect, this, 0); // 配置控件顯示區域
    return 0;
}

步驟 5:支援視窗縮放與導航

  • 在屬性頁啟用 Resizing Border、Minimize/Maximize Box。
  • 處理 WM_SIZE 讓控件隨對話框縮放:m_PdfFile.MoveWindow(0,0,cx,cy);
  • 利用 CPdf 內建方法實現翻頁、縮放、列印:
    gotoFirstPage()、gotoLastPage()、gotoNextPage()、gotoPreviousPage()、setZoom(percent)、Print()。

步驟 6:進階 UI 美化

  • 自訂縮放對話框:含 Edit 控件綁定 float m_find,呼叫 setZoom。
  • 修改對話框背景色:SetDialogBkColor(RGB(255,0,0)) 放入 InitInstance。
  • 替換預設圖示:刪除專案原有 Icon,匯入自訂 .ico 並將 ID 設為 IDR_MAINFRAME。

舉一反三:相同流程適用於其他 ActiveX 控件

對話框右鍵 → Insert ActiveX Control 即可選擇 Shockwave Flash Object、ActiveMovie Control、RealPlayer G2 Control 等,後續步驟雷同。掌握此模式,你就能快速打造專屬的多媒體播放器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved