DevStudioAdd-inWizard开发控件.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DevStudioAdd-inWizard开发控件.doc

手把手教你给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对话框如下: ? ? 填写名称,参数列表,下面的声明可以不修改,其中的id[X]代表该方法的ID,这个ID标识了该方法与插件工具条按钮的顺序,比如id[6]的方法,响应第6个按钮的点击。 我在这里添加了4个方法,分别是: ? 注意第一个是自动生成的。然后我们可以在类视图中看到ICommands下出现了一共5个方法。 ? 接下来要做的是,在工具条中插入这么多个按钮,并设置好按钮的图形(BMP位图)。在类视图中点开CDSAddin类的OnConnection(),这是一个插件连接时的初始化过程。 ? 在这里我们可以看到之前默认生成的AddinCommandMethod方法,它是如何与第一个按钮关联起来的。代码如下: ? ? 我尝试了半天,参考demo,才知道了按钮与方法的关联都是这样一个一个完成的。唯一不同的是,要做这样几个对应的修改(依次对应图中红框)。 A: 修改为对应方法的名字(我也不知道这里的区别在哪) B: 修改为事先创建好的字符串资源ID,下面会详细介绍。 C: 修改为对应的方法名。 D: 这个数字的参数名是n

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档