Access2000下内部COM插件的编程实现2008-02-26 VC知识库 简介在这里,我们仍然使用VC6中的ATL来实现Access2000下的内部COM插件,至于其基本原理和详细的实现方法及步骤,可以参看前面我的文章< Office2000下内部COM插件的编程实现>等,这里只重点说明它和其它Office2000中内部COM插件(如:Word2000、Excel2000、PowerPoint2000、Outlook2000)实现的不同之处,文章及示例代码都可以在http://code.cnblogs.com网站中找到。下面是Access2000内部COM插件示例代码运行后的效果图:

具体实现打开VC6.0,在新建工程中选中ATL COM Appwizard,在右侧工程名中输入AccessAddin,点击Finish(完成)按钮完成工程创建。接着,选取菜单Insert->New ATL Objec项,在弹出的ATL对象向导对话框中选中相应Objects对应右侧的Simple Object选项,点击下一步,在弹出的对话框中ShortName中输入AcceAddin,点OK完成插入ATL对象。接着通过导入类型库来实现_IDTExtensibility2接口,编释好上面所建工程后,在ClassView中的CAcceAddin类上点鼠标右键,在弹出的右键菜单中选Implement Interface项。在弹出的实现接口对话框中点击Add Typelib,在弹出的Browse Type Libraries对话框中,向下滚动选取Microsoft Add-in Designer(1.0)子项,点OK按钮。在弹出的接口列表对话框中选中_IDTExtensibility2接口,点OK按钮完成导入。系统会自动为你生成空的上面所提到的五个所需接口函数。下面来看看它们之间实现的不同点。第一点:注册类型信息有所不同(*.rgs),在文件AcceAddin.rgs中内容的下面,添加所下代码:
HKCU
{
Software
{
Microsoft
{
Office
{
Access
{
Addins
{
""AccessAddin.AcceAddin""
{
val FriendlyName = s ""Access2000插件""
val Description = s ""使用ATL开发的Access2000的内部插件""
val LoadBehavior = d ""00000003""
val CommandLineSafe = d ""00000000""
}
}
}
}
}
}
}
第二点:在文件中Stdafx.h中的类型的导入库部分源码将有所不同,可在Stdafx.h中添加下面代码。
#pragma warning(disable:4146) // 暂时屏蔽编译时4146警告信息