WEB开发网
开发学院软件开发VC VC++内部COM插件的编程实现 阅读

VC++内部COM插件的编程实现

 2006-07-21 11:45:38 来源:WEB开发网   
核心提示: 所有的幕后工作已经准备就绪,只差个工具栏界面就一切OK了,VC++内部COM插件的编程实现(3),打开类CDSAddIn,它里面有三个成员函数,其中OnConnection和OnDisconnection成员函数的意义非常重要,今天的话题就聊到这里,还是老规矩,它们的意义如下:<1&

所有的幕后工作已经准备就绪,只差个工具栏界面就一切OK了。打开类CDSAddIn,它里面有三个成员函数,其中OnConnection和OnDisconnection成员函数的意义非常重要。它们的意义如下:

<1>OnConnection:插件的初始化任务都在这里完成。如COM服务的启动,工具栏/菜单栏的创建,工具栏按钮/菜单项的添加与修改等等。

<2>OnDisconnection:插件的卸载工作都在这里完成。如COM服务的卸载,工具栏/菜单栏的销毁,释放等等。

了解了它们各自的用途之后我们就可以在相应的消息事件中添加代码了。很显然工具栏的初始化应该在OnConnection事件中完成。

在OnConnection事件中系统首先获得了VC应用程序接口,然后调用一个接口函数:AddCommand来为插件添加命令和命令影射函数。然后再使用另外一个接口函数AddCommandBarButton向工具栏中添加工具栏按钮,其中每个工具栏按钮会和一个命令标志符号相连接,这样就能实现按钮和命令(消息)之间的一一对应。下面是添加一个命令和一个工具栏按钮的代码(如果你要添加多个工具栏按钮只要重复此步骤即可):

LPCTSTR szCommand = _T("GetCurDirCommand");
VARIANT_BOOL bRet;
CString strCmdString;
strCmdString.LoadString(IDS_CMD_STRING);
strCmdString = szCommand + strCmdString;
CComBSTR bszCmdString(strCmdString);
CComBSTR bszMethod(_T("GetCurDirCommandMethod"));
CComBSTR bszCmdName(szCommand);  //和下面添加工具栏按钮对应
VERIFY_OK(pApplication->AddCommand(bszCmdString,bszMethod,0,dwCookie,&bRet));
//AddCommand 参数含义:
//bszCmdString:命令字符串。
//bszMethod:Icommands接口函数名。
//第三个参数代表位图偏移量。
//第四和第五个参数分贝为系统参数和返回值(参照MSDN的IApplication介绍)
if (bRet == VARIANT_FALSE)
{
  *OnConnection = VARIANT_FALSE;
  return S_OK;
}
//添加工具栏按钮
if (bFirstTime == VARIANT_TRUE)
{
   VERIFY_OK(pApplication->AddCommandBarButton(dsGlyph, bszCmdName, m_dwCookie));
}

<3.5> 编译,连接及在VC中引入插件

以上就是我们所有的代码工作,接下来赶快Build以下吧。编译通过的话,在你的工程Debug目录下会有个dll文件。然后打开VC编辑器,在VC任何一个工具栏上点击鼠标右键,弹出如下图所示菜单。然后选择”Customize”子菜单,打开如下图所示的工具栏定制窗口:

接着选择该窗口的最后一页"Add-Ins and Macro Files"出现下图所示窗口。

然后点击”Browse...”按钮,这时打开你工程下的Debug目录中的DLL文件,这样你就可以看到你制作的工具栏了。同样你再次打开上面的菜单,这次可以看到多了一个工具栏,并且名字乱七八糟的,怎么改变工具栏的名字呢?方法很简单:打开上面窗口中的”Toolbars”选项页,在工具栏列表框中找到你的工具栏,然后在”Toolbar name”编辑框中输入你想要的名字即可。再打开上面的菜单看看名字是不是变了,哈哈!

OK,今天的话题就聊到这里,还是老规矩,有什么问题请MAIL给我,再次祝大家学习愉快. Bye!

上一页  1 2 3 

Tags:VC 内部 COM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接