(转)用VC6.0编写Word插件(Office2007篇)

来源:互联网 发布:集线器端口上的电涌usb 编辑:程序博客网 时间:2024/04/28 00:06

简介

  微软在06年底推出了两个重量级的产品:Vista和Office 2007。在Office2007中使用了新的UI方式。微软大力鼓吹这种叫做Ribbon的新的UI将会给使用Office的人带来更大的便利性。在Office插件方面,微软保持了对原有版本 (office 2K、XP、03) 的兼容性,都被放到一个叫做Add-In的Tab里面,如下图所示。

  不过样子比较难看,到底有没有办法让界面做得更漂亮一点呢?答案是肯定的。本文假设读者已经阅读并理解了我的上一篇文章:
“用VC6.0编写Word插件(Office2K、XP、03)”
  首先,引入新的Office的几个库文件,如果你的电脑安装了Office 2007,那么下面几个文件就会存在你的硬盘里面。
然后,原来的那个WordAddin需要继承一个名叫IRibbonExtensibility新的接口,并实现这个接口必须的函数raw_GetCustomUI。

然后,原来的那个WordAddin需要继承一个名叫IRibbonExtensibility新的接口,并实现这个接口必须的函数raw_GetCustomUI。


  实现上边这个函数的目的是,因为Office2007在启动的时候就会询问插件的IRibbonExtensibility接口是否存在,如果该接口存在的话,就会调用这个接口的函数raw_GetCustomUI,在这个函数里面,我们必须把我们的UI通过XML的方式传给Office 2007,这样,在XML里面,我们可以自己定义我们需要的UI形式,样式非常丰富多彩,只有想不到,没有做不到。以下是一个简单的XML的例子:

<customUI xmlns="http://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="http://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安排方式,大大的增加了灵活性。本着与时俱进的精神,我们应该跟随微软的脚步,尽快掌握这个技术。

 

转自:http://www.vckbase.com/document/viewdoc/?id=1749

原创粉丝点击