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

C++ Builder 輕鬆駕馭 ActiveX 控件:從安裝到 RealPlayer/Flash 實戰

     編輯:VC 教學

ActiveX 在 BCB 中的地位

BCB 通過 **Import ActiveX** 向導將 .ocx/.dll 封裝為原生 VCL 組件 (生成 *_TLB.h/.cpp),讓開發者像使用 TButton 一樣拖放、設置屬性、雙擊編寫事件,**無需手寫 COM 介面/查詢/引用計數**。

三步安裝導入

  1. **Component → Import ActiveX Control...** 打開對話框。
  2. 列表中選擇已註冊控件 (如 RealPlayer ActiveX Control Library、Shockwave Flash Object) → **Install**。
    若列表無目標控件 → **Add...** 選擇 .ocx 文件 → BCB 自動註冊並生成封裝。
  3. 安裝後,**ActiveX** 頁面出現對應組件圖標 (如 TRealPlayer、TShockwaveFlash),拖入表單即可使用。

探索控件成員:兩大秘籍

  1. 生成的頭文件:$(BCB)\Imports\*_TLB.h — 完整定義了介面、屬性、方法、事件、枚舉,配合 IDE 代碼提示 (Ctrl+Space) 即可編碼。
  2. Code Explorer (Ctrl+Shift+E):雙擊組件名 → 右側顯示其類定義、繼承鏈、公開成員,極速查閱。

實戰一:RealPlayer 播放器

關鍵屬性設置

  • Controls = "ImageWindow,ControlPanel,StatusBar" — 顯示視頻窗口/控制條/狀態欄 (默認僅音頻)。
  • Align = alClient — 隨表單縮放自適應。

核心代碼

void __fastcall TForm1::BtnOpenClick(TObject *Sender) {
    if (OpenDialog1->Execute()) {
        RealPlayer1->Source = OpenDialog1->FileName; // OleVariant 隱式轉換
        RealPlayer1->DoPlay(); // 播放
    }
}
void __fastcall TForm1::BtnExitClick(TObject *Sender) { Close(); }

文件過濾器

OpenDialog1->Filter = "Media Files (*.rm;*.ram;*.ra;*.swf;*.mp3)|*.rm;*.ram;*.ra;*.swf;*.mp3|All Files|*.*";

實戰二:Flash (Shockwave Flash) 播放器

常用屬性/方法

成員說明
Movie設定 .swf 路徑或 URL (OleVariant)
Play() / Stop() / Rewind()播放控制
FrameNum / TotalFrames當前/總幂號
SetVariable / GetVariable與 ActionScript 變量交互
TSetProperty / TGetProperty操作影片剪輯屬性 (_x, _y, _alpha, _visible...)
CallFunction / CallFrame調用 AS 函數 (需 Flash 8+ ExternalInterface)

範例:C++ 與 ActionScript 雙向通訊

// C++ → AS
Flash1->SetVariable("_root.cppMsg", "Hello from BCB!");
Flash1->TCallFrame("/_root", "onCppCall"); // 告知 AS 有新數據

// AS → C++ (需在 Flash 中 fscommand("event", "data"))
void __fastcall TForm1::Flash1FSCommand(TVariant &command, TVariant &args) {
    if (command == "event") ShowMessage("Flash says: " + args);
}

避坑指南與現代替代

總結

BCB 的 ActiveX 封裝極其強大,**Import → Install → Drop → Code** 四步即可調用豐富生態。但隨著 64 位、跨平台、安全性要求提升,**新專案首選原生 C++ 庫 (libvlc, FFmpeg, CEF, WebView2, QtMultimedia)**,ActiveX 僅作舊系統維護/快速原型之用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
問題解決/替代
64 位 BCB 無法載入 32 位 OCX目標平台選 Win32;或改用原生庫 (libvlc、Chromium Embedded Framework CEF)
Flash 2020 年底停止支援全面遷移至 HTML5/JS (CEF/WebView2) 或 Ruffle (WASM 模擬器)
RealPlayer 格式舊、專有改用 FFmpeg + SDL2/QtMultimedia 實現通用播放器
ActiveX 事件不觸發確認 EventSink 正確連接;嘗試 QueryInterface 手動建議連接點
部署需註冊 OCX安裝腳本執行 regsvr32 xxx.ocx;或使用 Registration-Free COM (Manifest)