解讀 VB5 新功能, 逢週 5 推出。


(2) 從 VBX 到 ActiveX  (03/28)

談 到 ActiveX 的 發 展 過 程 , 必 須 追 溯 至 VBX(Visual Basic control eXtension), VBX 是 VB 1.0 版 時 (1991 年 )所 制 訂 的 control 規 格 , 由 於 當 時 唯 一 的 Windows 開 發 工 具 是 難 學 又 難 用 的 C/SDK(Software Development Kits), 因 此 像 VB 這 種 可 快 速 開 發 應 用 程 式 的 軟 體 旋 即 造 成 Windows 開 發 工 具 的 震 撼 。

VB 的 上 市 引 燃 了 軟 體 開 發 工 具 的 兩 條 主 線 ─ 「 軟 體 元 件 」 及 「 視 覺 化 開 發 工 具」 。 在 軟 體 元 件 工 業 上 , 初 期 遵 循 VBX 規 格 來 開 發 control 的 公 司 只 是 一 些 小 軟 體 公 司 , 但 隨 著 VBX control 的 增 加 , 投 入 開 發 的 公 司 也 越 來 越 多 , 而 使 得 VBX control 儼 然 成 為 全 世 界 最 大 的 「 可 再 用 軟 體 元 件 庫 」 , 令 正 統 的 物 件 導 向 程 式 語 言 (例 如 Smalltalk、 C++)為 之 汗 顏 。

眼 看 著 VB 的 成 功 , 不 少 開 發 工 具 也 開 始 為 自 己 加 上 Visual 的 外 衣 , Visual C++、 Delphi、 Visual Object… 等 視 覺 化 開 發 工 具 , 而 為 了 吸 引 VBX control 的 使 用 者 , 這 些 開 發 工 具 亦 無 不 宣 稱 自 己 可 支 援 VBX control, 在 在 都 證 明 了 VBX 的 成 功 。

就 像 大 部 份 的 電 腦 科 技 不 斷 地 向 前 演 進 一 樣 , VBX 也 不 例 外 , 微 軟 公 司 在 推 廣 OLE(Object Linking and Embedded) 物 件 交 換 標 準 成 功 之 後 , 決 定 將 VBX 從 VB 的 規 格 推 向 OLE 的 規 格 , 於 是 VBX 蛻 變 成 為 OCX(OLE Control eXtension)。

由 於 OCX 已 經 成 為 業 界 標 準 的 control, 因 此 不 只 是 VB 可 以 使 用 它 , 只 要 是 支 援 OCX 的 開 發 工 具 都 可 以 使 用 它 , 感 覺 上 VB 的 焦 點 好 像 被 OCX 給 搶 走 了 , 但 其 實 我 們 可 以 把 OCX 視 為 VBX 走 向 control 世 界 大 同 的 化 身 。

既 然 OCX 已 經 是 世 界 大 同 的 control, 為 什 麼 又 會 出 現 ActiveX 呢 ? 在 過 去 的 兩 三 年 中 , Internet 的 發 展 遠 遠 超 過 我 們 的 想 像 , 然 而 Web Page 的 設 計 卻 一 直 受 限 於 HTML(HyperText Markup Language) 語 言 的 限 制 , 只 能 在 文 字 、 圖 片 、 及 連 結 等 功 能 上 面 打 轉 , 不 像 程 式 設 計 那 麼 地 有 彈 性 , 為 了 讓 Web Page 也 能 夠 像 VB 程 式 一 樣 , 享 用 豐 富 的 control, 微 軟 從 既 有 的 OCX control 中 衍 生 出 另 一 種 適 用 於 Internet 環 境 的 新 control, 名 稱 就 叫 做 ActiveX control。

別 以 為 ActiveX control 是 全 新 的 control, 它 仍 然 遵 循 OCX 的 架 構 , 因 此 它 也 可 以 直 接 使 用 於 VB 4.0、 VC++ 4.0 等 支 援 OCX 規 格 的 開 發 工 具 中 , 由 於 它 是 因 應 Internet 而 誕 生 的 control, 我 們 可 以 把 它 視 為 OCX 的 Internet 強 化 版 。

那 麼 ActiveX 跟 VB5 有 什 麼 關 係 呢 ? 過 去 VB 不 能 製 作 control 一 直 是 它 被 詬 病 的 一 點 , 現 在 VB 5.0 版 是 一 個 可 以 製 作 Active 元 件 的 版 本 。 下 週 起 我 們 將 陸 續 解 說 VB5 可 製 作 的 ActiveX 元 件 ─ ActiveX control、 ActiveX Document、 ActiveX code component