DevStudioAdd-inWizard开发控件.doc_第1页
DevStudioAdd-inWizard开发控件.doc_第2页
DevStudioAdd-inWizard开发控件.doc_第3页
DevStudioAdd-inWizard开发控件.doc_第4页
DevStudioAdd-inWizard开发控件.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

手把手教你给VC+编写插件 下午偶然注意到VC+6.0新建工程标签页下的DevStudio Add-in Wizard,没有接触过,看名字是给Developer Studio开发插件,心生喜感,于是百度之,发生百度检索几乎找不到一篇完整的文字讲述这个wizard的使用,所以在CSDN搜了搜,费尽周折下载了 一个只有几行实际代码的demo,同时在MSDN提供的实例中看到了类似的demo,研究了几个小时,基本理清了这种插件的编写过程,总结出来,以供大家 交流。IDE插件的用处不言而喻,大名鼎鼎的Bound Check和Visual Assist X都属于这类插件。但我刚刚接触,水平很有限,更多地是希望得到有共同爱好的朋友的指教。鉴于各种“手把手教你XXX”文体横行,我也来手把手一次吧。我这里的环境是Visual C+ 6.0,相信其他Visual Studio版本的方法是大同小异的。1. 创建工程。启动VC+,新建一个DevStudio Add-in Wizard工程,如图,比如我这里命名为Addin,确定。工程设置,这里填写你给插件的描述,这将在Visual Studio装载插件时在列表中显示。比如我写Addin by Lusta。上图中2个复选框最好都选上,第一个使工程有默认的按钮工具条,第二个使该工程默认重写了响应Developer Studio事件的函数。确认。2. 相关准备。进入工程,查看Class View,会发现它自动生成了这么几个类。其中,CXXXApp的作用相当于其他一般工程类型中的App类,比如MFC中的CWinApp类,是整个可执行程序或者链接库的启动类。CCommands类负责完成从界面触发的操作,具体的细节我也讲不清楚,因为这里用到了COM组件,似乎。我不是很了解,基本只是摸清了大概的框架。CDSAddIn类,完成某些初始化工作。具体描述在MSDN中可以找到,MSDN中有关于插件开发的几篇文章。我没有细看,主要得研究代码才懂。ICommands,声明为interface ICommands : IDispatch; 我也看不懂了,interface ICommands不知道是属于什么类或者什么组件,COM技术?但是我看懂了这其中的函数实际就是响应VC界面上插件工具条按钮点击的代码实体。Globals变量中有不少内容,但都属于Wizard生成,可以不管。对了,我们还没有想好编写的这个插件得有些什么功能。这些决定了我们要在ICommands中写进一些什么函数。比如,我经常用windows记事本来临时做一些大段代码的批量处理,替换,查找,要比VC自身提供的功能方便很多,所以我们在这里给插件添加一个启动windows记事本的功能。windows还有一些小工具也很实用,比如我的专业是遥感,所以经常是做图像处理,偶尔会用windows画图工具来截取图片或者转换图像格式, 所以也可以把启动MSPaint添加插件工具条按钮中。这些没必要细说,我这里还添加了启动计算器的功能,因为Visual Studio调试并不提供手动计算的功能,比如你计算某幅位图的存储宽度。另外,增加一个通过百度搜索某一关键字的功能,以及关于本插件的信息。3.编写代码。使用向导,右击类视图中的ICommands,点击Add Method,似乎这里都是叫方法,不叫函数。注意:ICommands中已经默认生成了一个叫做AddinCommandMethod的方法,你可以删 除它,也可以重写它做自己的事。Add Method对话框如下:填写名称,参数列表,下面的声明可以不修改,其中的idX代表该方法的ID,这个ID标识了该方法与插件工具条按钮的顺序,比如id6的方法,响应第6个按钮的点击。我在这里添加了4个方法,分别是:注意第一个是自动生成的。然后我们可以在类视图中看到ICommands下出现了一共5个方法。接下来要做的是,在工具条中插入这么多个按钮,并设置好按钮的图形(BMP位图)。在类视图中点开CDSAddin类的OnConnection(),这是一个插件连接时的初始化过程。在这里我们可以看到之前默认生成的AddinCommandMethod方法,它是如何与第一个按钮关联起来的。代码如下:我尝试了半天,参考demo,才知道了按钮与方法的关联都是这样一个一个完成的。唯一不同的是,要做这样几个对应的修改(依次对应图中红框)。A: 修改为对应方法的名字(我也不知道这里的区别在哪)B: 修改为事先创建好的字符串资源ID,下面会详细介绍。C: 修改为对应的方法名。D: 这个数字的参数名是nBitmapOffset,意思是按钮位图上的偏移值(如果你熟悉MFC工具条的位图就能明白,加载工具条是自动把位图的某一段分割为一个按钮)。Windows提供的demo中,是用 把两段这样的代码分别圈起来的,形成了不同的作用域,这样就免去了声明不同命局部变量的麻烦。这样我们就只需把这个包括其中的内容拷贝,粘贴4次,然后修改里面的相应参数即可。这里需要注意两点。一是nBitmapOffset这个参数,要根据你所绘制的工具条位图的顺序来对应方法的顺序。比如第一个按钮的 nBitmapOffset = 0,第二个按钮的nBitmapOffset = 1,琢磨琢磨你就懂了。这里我也是调试了老半天才发现的。MSDN上没有任何说明,网上更找不到了。我的理解是:方法与按钮的关联唯一地由这个参数决定。不管我有没有理解错,你可别弄混了就是。接下来详细说说上面代码中的IDS_CMD_STRING1字符串资源的格式。如下图:Caption由n分为3个部分,第一部分是什么我没有发现,第二部分是光标移到插件按钮上时状态栏提示,第三部分是光标提示。这里似乎如果格式错误的话就会导致按钮加载失败。得好好注意。最后就是完成方法的具体实现。这里已经没有什么需要说的了,都是一般函数的编写一样。比如这里我这么测试一下:弹一个框,显示notepad。其他类似。如果需要完成功能的话当然easy了,用ShellExecute()或者别的都行。至于搜索文 本,MSDN的SAMPLE中有一个API查询的例子,里面用到了获取选定文本的方法,这里不细述,获取选定文本后我们只需构建出这么一个东西/s?wd=XXXXX就行了。然后ShellExecute。至于位图按钮,就得自己画或者编辑了,分为2个,一个是3232,5个按钮就是16032,另一个是中等尺寸,1616,5个按钮就是8016。我这里是用Photoshop画的,比较麻烦。最后我们看看最终效果。我们把编译好的Addin.dll拷贝到VC+安装目录下面的addin目录中,比如我的Visual C+6.0安装在D:盘,所以我可以打开D:Program FilesMicrosoft Visual StudioCommonMSDev98AddIns,粘贴到这里,而后在VC+中点击tools-customize,在 customize对话框中点选Add-ins and Macro files标签页,如果没错的话应该看到列表中有Addin by Lusta。勾选,close。如果有什么问题的话,VC+会提示无法装载,问题在哪就得自己找了。图中Toolbar8就是我刚刚加载的插件,旁边是Visual Assist X的工具条。可以看到光标提示“Notepad”。我们点击它,可以看到弹框。说明插件已经成功注入了VC+主程序。我们的编写到此结束

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论