大多數 C++Builder 開發者可能一輩子都不會碰到 ToolsAPI,但如果你對 IDE 擴充開發有興趣,不妨跟著這篇文章一起探索如何透過 ToolsAPI 來「整型」你的開發環境。本文將示範如何撰寫一個設計時套件,動態調整主選單項目的可見度、標題,甚至實現選單的多語言本地化。
ToolsAPI 是 Borland 提供給第三方開發者擴充 IDE 功能的介面集合。要存取 IDE 的主視窗、選單等核心物件,第一步就是向 BorlandIDEServices 查詢 INTAServices 介面。拿到這個介面後,便能透過 MainMenu 屬性觸達完整的選單結構。
範例採用 BPL 套件專案,進入點為 Register 程序。程式碼主要分為三大區塊:
TMainMenu 所有層級的 TMenuItem,將名稱與標題寫入 INI 檔(NeedWriteToIni 控制)。// 取得 INTAServices 介面
_di_INTAServices IDE;
HRESULT hr = BorlandIDEServices->QueryInterface(__uuidof(INTAServices), (void**)&IDE);
// 定義巨集簡化存取 AppBuilder (TApplication 型別)
#define AppBuilder IDE->MainMenu->Owner
// 遞迴處理選單項目
void __fastcall EnumerateMenuItem(TMenuItem* MenuItem) {
DoMenuItem(MenuItem); // 處理單一項目
for (int i = 0; i < MenuItem->Count; i++)
EnumerateMenuItem(MenuItem->Items[i]);
}
程式碼中大量運用 dynamic_cast 與 FindComponent 進行型別安全的元件查找,並妥善管理 TIniFile 與 TStringList 的記憶體釋放,展示了撰寫穩健 IDE 外掛的良好習慣。
此技術可應用於:企業內部統一 IDE 介面語言、依專案類型動態顯示/隱藏特定功能選單、建立客製化的專案精靈啟動點等。掌握 ToolsAPI,就能將 BCB 從單純的編輯器轉變為量身打造的開發平台。