Microsoft 在 2006 年底推出兩款重量級產品:Vista 與 Office 2007。Office 2007 採用全新 UI 方式,Microsoft 大力推廣這種稱為 Ribbon 的新介面,將為 Office 使用者帶來更大便利性。在 Office 增益集方面,Microsoft 保持對舊版本(Office 2K、XP、03)的相容性,都被放入一個稱為「增益集」的索引標籤中,但外觀較為難看。有沒有辦法讓介面更漂亮?答案是肯定的。
本文假設讀者已閱讀並理解上一篇文章:「用 VC6.0 撰寫 Word 增益集 (Office 2K、XP、03)」。首先,引入新版 Office 的幾個程式庫檔案,若電腦安裝了 Office 2007,這些檔案就會存在硬碟中。
接著,原本的 WordAddin 需繼承一個名為 IRibbonExtensibility 的新介面,並實作此介面必要的函式 raw_GetCustomUI。





實作 raw_GetCustomUI 函式的目的,是因為 Office 2007 啟動時會詢問增益集的 IRibbonExtensibility 介面是否存在。若存在,便會呼叫此介面的 raw_GetCustomUI 函式,我們必須在此函式中以 XML 方式將 UI 傳給 Office 2007。在 XML 中可自訂所需 UI 形式,樣式豐富多彩。以下是簡單 XML 範例:
<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
<tabs>
<tab id="CustomTab" label="MyTab">
<group id="SimpleControls" label="MyGroup">
<button id="Button1" imageMso="HappyFace" size="large"
label="MyButton" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
可將此 XML 字串放入資源檔,並在 raw_GetCustomUI 中傳遞給 Office。以下是此函式的簡單實作:

至此,Word UI 上應可看到我們的增益集:

此時點擊按鈕會發現沒有反應。要回應按鈕事件,需修改兩處。首先在 XML 字串中註明按鈕回應函式:
<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
<tabs>
<tab id="CustomTab" label="MyTab">
<group id="SimpleControls" label="MyGroup">
<button id="Button1" imageMso="HappyFace" size="large"
label="MyButton"
onAction="OnMyButton" /> <!-- 新增回應函式 -->
</group>
</tab>
</tabs>
</ribbon>
</customUI>
接著在元件中新增此介面函式:



務必注意新增的介面函式必須與 XML 指定的相同。現在再點擊按鈕,就會彈出對話方塊。
Office 2007 系列增益集與以往編寫方法大異。透過引入 XML UI 配置方式,大幅增加靈活性。秉持與時俱進精神,我們應跟隨 Microsoft 腳步,儘快掌握此技術。