您的位置:首页 > 编程语言 > C语言/C++

使用VC++ ATL开发Office COM插件(一)

2007-08-31 12:40 363 查看
  说到Office相关的编程,大家首先想到的可能是VBA(Visual Basic for Application),事实上, ATL也是一种很好的工具。这里介绍的就是一种基于ATL的Office编程方法,实现的功能很简单,仅仅是一个示例,步骤如下:

  1、在visual C++编程环境下,利用向导生成一个名为WordAddin的ATL COM Appwizard工程:

   在向导的第一个对话框中server type单选框选择默认的服务器类型Dynamic Link Library(DLL),下面的三个复选框中选择Allow merging of proxy-stub code选项。然后单击Finish,这样一个空的ATL project就产生了(如图 一)。



图文
图一
  2、插入我们的ATL object:

  选择菜单Insert—>Insert new ATL object,出现new ATL object向导对话框,左边的category列表中选择object,右边相应的选择simple object,单击下一步(Next)(如图 二):






图二
  在第二个对话框names属性页的“Short Name:”中填入Addin(如图三):




图三
  在Attribute属性页中,选中Support IsupportErrorInfo复选框,单击OK(如图四):




图四
  这样就产生了一个类名为WordAddin的ATL COM object,编译(build)该工程看是否一切正常。

  2、用IDTExtensibility2实现CAddin类:

    IDTExtensibility2是定义在MSADDin Designer typelibrary(MSADDNDR.dll/MSADDNDR.tlb)中的库文件,该文件一般在C:/Program Files/Common Files/Designer目录下。IDTExtensibility2 库提供了 5 个可用来操纵插件以及宿主应用程序的事件: OnConnection、OnDisconnection、OnAddInsUpdate、OnStartupComplete 和 OnBeginShutdown。这些事件的具体功能和用法可查阅MSDN。用向导来实现IDTExtensibility2接口:切换到 classview页,右键点击Caddin类,在弹出的菜单中选择Implement Interface,出现Implement Interface对话框,选择Add Tylpelib按钮(如图 五):




图五
  (单击OK,)在出现的Browse Typelibraries对话框中选择Microsoft Add-in Designer(1.0) (如图六):




图六
  单击OK,在AddinDesignerObjects属性页中选择IDTExtensibility2(如图七):




图七
  再单击OK。这样向导就在ATL COM object中添加了IDTExtensibility2的5个具体事件,并对他们进行了一些默认的初始设置,同时还更新了COM_INTERFACE_MAP()。


  4、注册插件到它的宿主程序:

  打开文件视图FileView—>Resource File中的Addin.rgs文件,加入以下代码:

HKCU
{
 Software
 {
  Microsoft
  {
   Office
   {
    Word
    {
     Addins
     {
      ''WordAddin.Addin''
      {
       val FriendlyName = s ''WORD Custom Addin''
       val Description = s ''Word Custom Addin''
       val LoadBehavior = d ''00000003''
       val CommandLineSafe = d ''00000001''
      }
     }
    }
   }
  }
 }
}
  5、重新编译(build)该工程注册我们的插件。

  6、运行,选择Executable File为word 2000,注意要选择正确的路径,如果运行成功,则插件已经加入到word中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: