一、闲聊
首先,在这里向前段时间没来得及回复你们问题的朋友们说声对不起了,这段时间工作实在太忙,我快倒!哈哈!好了,让我们转入正题,今天要谈的话题是COM,稍微深入一点,不知道大家用过C++Test或者Visual Assistant(可到
VC知识库工具栏目下载)之类的软件没有,它们都有个非常引人注目的功能,那就是把它们自身嵌入到VC开发环境中去。这个功能让我痴迷不已,原因只有一个:我想做一个可以嵌入VC开发环境的VC工程解析器(
VC/Delphi工程解析器已被收录在
VC知识库在线杂志第19期中),这样用户在VC开发环境中就可以直接对当前或所有工程进行各种分析,统计。那么实现它简单吗?简单,Next和Copy即可轻松完成;仅仅这些吗?不是,它的背后还有博大精深的COM做支撑。不管困难与否,还是让我们先试为快。
二、效果图三、实现步骤:
<3.1>新建一个
<DevStudio Add-in Wizard>类型工程,输入工程名称"CodeAnalyser".
<3.2>进入第二个画面,系统要求用户输入插件的名称和描述信息。并且要求用户选择
是否需要生成工具栏以及是否自动添加VC事件响应代码。
<3.3>点击"Finish"结束向导,进入代码编辑窗口。
在这里我们要说的一点是:该工程引用了ICommands接口,并从该接口上派生出 CCommands类。该类完成了所有用户自定义函数接口,VC应用程序消息响应和VC调试动作的消息响应工作。当我们真正为CCommands类添加成员函数之前我们必须先为ICommands接口添加相应的函数接口声明。在本工程中我总共为ICommands接口添加了两个函数接口,它们名字分别为:
GetCurDirCommandMethod和
QuitCommandMethod声明如下:(在
CodeAnalyer.odl文件中)
在接口ICommands添加接口函数,那么相应的我们也要在类CCommands中声明和实现ICommands接口函数,函数的内部代码和普通工程代码没什么区别。
<3.4> 创建工具栏,连接工具栏按钮事件
所有的幕后工作已经准备就绪,只差个工具栏界面就一切OK了。打开类CDSAddIn,它里面有三个成员函数,其中OnConnection和OnDisconnection成员函数的意义非常重要。它们的意义如下:
<3.5>
编译,连接及在VC中引入插件
以上就是我们所有的代码工作,接下来赶快Build以下吧。编译通过的话,在你的工程Debug目录下会有个dll文件。然后打开VC编辑器,在VC任何一个工具栏上点击鼠标右键,弹出如下图所示菜单。然后选择”Customize”子菜单,打开如下图所示的工具栏定制窗口:
接着选择该窗口的最后一页"Add-Ins and Macro Files"出现下图所示窗口。
然后点击”Browse...”按钮,这时打开你工程下的Debug目录中的DLL文件,这样你就可以看到你制作的工具栏了。同样你再次打开上面的菜单,这次可以看到多了一个工具栏,并且名字乱七八糟的,怎么改变工具栏的名字呢?方法很简单:打开上面窗口中的”Toolbars”选项页,在工具栏列表框中找到你的工具栏,然后在”Toolbar name”编辑框中输入你想要的名字即可。再打开上面的菜单看看名字是不是变了,哈哈!
OK,今天的话题就聊到这里,还是老规矩,有什么问题请MAIL给我,再次祝大家学习愉快. Bye!
分享到:
相关推荐
VC++内部COM插件的编程实现.doc
VC++与Matlab混合编程的快速实现
Win32环境下基于VC++6.0串口通信编程方法
vc++与matlab混合编程的快速实现
VC++ 与OpenGL 混合编程实现三维图形处理
VC++源码—USB编程 VC++源码—USB编程
本程序实现了使用vc++与matcom混合编程实现画正弦波形图
VC++高级编程VC++高级编程VC++高级编程VC++高级编程
vc++数据采集卡编程的两种方法。并举例说明调用过程和难点解说。
VC++实现对话框编程C++源代码程序VC++实现对话框编程C++源代码程序
对初学者有很大的帮助,其中也有高级数据库编程内容 VC++和ACCESS ODBC\DAO\ADO等
使用VC++ ATL实现Office的COM插件
遗传算法是一种数学优化的算法, 用于求问题的最优解, 本程序是基于VC的遗传算法编程实现
VC++开发BHO插件——定制你的浏览器
VC++与 Matlab混合编程实现卫星遥感影像的三维显示.rar
何使用Matlab 的Complier 将*.m函数编译为动态链接库DLL,提供给VC++调用的方法, 提供了一种VC++与Matlab 混合编程的快速实现。如何将Matlab 与VC++进行有效的混合编程广受工程科研人员的关注。解决这个问题,不仅能...
有关VC++的多线程编程,word文档,有实例代码,而且是最基础的思想
vc++数据库编程vc++数据库编程vc++数据库编程vc++数据库编程vc++数据库编程vc++数据库编程
VC++扫雷编程 具体代码实现 功能详细说明
经典的vc++6.0插件,很好用不用破解,非常好的小插件!!