查看: 352  |  回复: 0
  VB6 AddIn IDE下的插件(ADDIN)的开发
楼主
发表于 2023年4月26日 16:20

做自己VB6的IDE ADDIN你想过没有?太刺激了!

关键词:外接程序(Add-Ins),ActiveX,接⼝,多态,事件变量

⼀、概述

Visual Basic下的Add-Ins,即外接程序,是扩展VB编程环境的⾮常有⽤的⼯具。作为⼀个开发者,我们发现在使⽤Visual Basic集成开发环境(IDE)时经常需要重复地⼲同⼀件简单的⼯作,如设置所有或⼀类控件的字体,前景及背景颜⾊,改变控件的Tab次序等。这些简单、单调⽽重复性的劳动如果由程序⾃动完成,将变得⾮常⽅便,⽽Add-Ins正为实现这⼀功能提供了可能。与Visual Basic的早期版本不同,Visual Basic6.0下的Add-Ins是⼀种模块化的ActiveX部件,可以作为ActiveX DLL或EXE⽂件进⾏编译。另外,跟以前的版本相⽐,VB6下Add-Ins⽆论从编程思想还是从其扩展模型的对象与结构来说,变化都⽐较⼤,因此VB6下编写Add-Ins程序与早期版本将会有很⼤不同。在这篇⽂章中,我们将从⼀个具体例⼦出发,阐述VB6下Add-Ins的编程。 

⼆、问题的提出

在Visual Basic下进⾏窗体设计时,我们⼀般希望⾃⼰的程序具有风格⼀致的界⾯,如同类控件具有相同的外观、相同的字体等。另外,我们在设计时还应该考虑到屏幕分辨率的变化对程序的影响,例如我们经常发现出现这样的问题:即在某⼀分辨率(如800*600)下看起来⽐较好的字体,当在另⼀分辨率下(如640*480)运⾏时将变得⾮常难看;或者在中⽂环境下看起来⽐较舒服,但在英⽂环境下却很不清晰。这种种原因都使得我们必须调整窗体控件的字体,以达到最佳效果。但如果表单或控件⽐较多时,⼿⼯调整将会⾮常繁琐,⽽且容易出错,因此编写⼀个Add-Ins以实现字体的⾃动调整将会⾮常实⽤。本⽂中的例⼦即是⽤来实现此功能的。

三、编程⽅法

编写Add-Ins的最简单⽅法是⾸先利⽤VB6的编程模板⽣成⼀个Add-Ins的框架,然后在此框架上进⼀步实现⾃⼰的代码。具体⽅法是在VB6的“⽂件”菜单下选

择“新建⼯程”,然后在弹出的窗⼝中选择“外接程序”(英⽂版中是“Add-Ins”)即可。这时VB6将⽣成⼀个名为MyAddin的⼯程,该⼯程中包括⼀个窗体frm AddIn,⼀个模块AddIn,以及⼀个类模块Connect。下⾯我们对这些部分分别做⼀简单分析。

1.类模块Connect

整个类模块Connect的代码均是由模板⾃动⽣成的,⼤⼤⽅便了程序员编程,但其源代码中有⼀些⽐较重要的概念与⽅法,对我们理解VB Add-Ins甚⾄VB⾯向对象编程均有很⼤好处。下⾯我们对如下⼏点做⼀简单介绍(源代码由于是VB⾃动产⽣,这⾥就没有列出了)。

(1)实现IDTExtensibility接⼝

所有的VB外接程序都必须实现IDTExtensibility接⼝,该接⼝包含了当外接程序与Visual Basic连接时Visual Basic调⽤的⼀些⽅法,⽆论是通过外接程序管理器,还是其它⼀些⼿段。接⼝是VB6引⼊的新概念,是Visual Basic提供多态性的⼀种重要⼿段。我们知道,⾯向对象的语⾔⼀般都提供多态性。如C++语⾔,通过类的继承关系,⼦类重载⽗类的⽅法以实现其不同的特性,或⽗类仅提供⽅法框架,即⽆函数体的虚函数,⽽⼦类具体实现其代码。简单地说,多态意味着许多类可以提供同样的属性或者⽅法,⽽且调⽤者在调⽤这些属性或⽅法之前,不必知道某个对象属于什么类。严格来说,Visual Basic不是完整意义上的⾯向对象编程语⾔,但它也能实现多态性,不过这种多态性不是通过继承来实现的,⽽是通过多重ActiveX接⼝来提供的。多态性具体实现⽅法简单来说,⾸先是建⽴⼀个类模块,然后在该模块中声明⼀些⼦程序(Sub),但不实现其代码,这样该类模块可以说是⼀个抽象类,也即接⼝;然后建⽴其它的类模块,在这些类模块的声明部分中,使⽤Implements语句表明该类实现了上述接⼝,接下来就可以实现接⼝代码(也即接⼝的⽅法)了。这种⽤Implements语句的⽅法可以说与Java语⾔⽐较相似。⾄于这⽅⾯的详细信息,可参看VB的帮助或联机⼿册。

在类模块Connect中,使⽤Implements IDTExtensibility语句声明该类实现了IDTExtensibility接⼝。因此类模块Connect中实现了该接⼝包括的四个⽅法:OnAddInsUpdate,OnConnection,OnDisconnection,OnStartupComplete的代码,例如⼀条语句、过程调⽤、注释等等。如果过程是空的话,它会被编译器删掉。如果实在没有代码可往这些过程⾥加的话,就插⼊注释。这是因为既然实现了接⼝,就必须提供接⼝的所有⽅法的代码。这四种⽅法中,⽐较关键的是OnConnection和OnDisconnection⽅法,其中OnConnection⽅法当⼀个外接程序通过“外接程序管理器”对话框或另⼀个个接程序与Visual BasicIDE连接时被调⽤。我们⼀般在该⽅法中保存当前Visual Basic会话期实例,挂接VB菜单,⼯具栏,或显⽰初始窗⼝,以便⽤户使⽤该外接程序。⽽OnDisconnection⽅法当外接程序通过编程或“外接程序管理器”对话框与Visual BasicIDE分离时被调⽤。我们⼀般在该⽅法中卸掉菜单、⼯具栏、程序窗体,以及做保存设置等⼯作。


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com