- 浏览: 245195 次
文章分类
- 全部博客 (395)
- Tech (0)
- [随笔分类]心情 (95)
- [随笔分类]技术 (112)
- [随笔分类]管理心得 (13)
- [随笔分类]Code SOP (5)
- [随笔分类]望图知意 (11)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (8)
- [随笔分类]重构代码 (1)
- [随笔分类]童童 (2)
- Program (1)
- [随笔分类]看你知道不知道 (1)
- [网站分类]4.其他技术区 (31)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (21)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [随笔分类]昨日关注 (15)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (3)
- [随笔分类]一步一个脚印 (2)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (3)
最新评论
Vb6的IDE改造基本搞定了,感觉很爽,前几天在弄DeveloperHelper的时候,一直无法理解为什么无法将窗口放入IDE的环境中,而很多好的Add-IN确是可以放入IDE里边的,在MSDN和网上查阅了一些文章,终于明白了道理,现在将道理记录一下:
(1)控件的容器是UserDocument而不是Form。在VB的IDE环境中那些可链接的窗体,其实都是一个个的UserDocument,因此,不要在Form上开发,而是要在UserDocument上开发,我也很奇怪为什么Microsoft给的模板要是From呢,直接给好UserDocument该有多好。
(2)UserDocument的属性设置,其实UserDocument的属性没有什么特殊的要求,但是有几点要特殊注意,一个是最好把ScrollBasr的属性该为0,这样就不会出现滑块了,还有最好不要做UserDocuemtn启动位置的设置,因为在VB的IDE里边所有的链接窗体的启动位置是自动记忆的,当然也包括大小,因此最好不要设置这些代码,否则就不爽了。
(3)UserDocument的名字一定要特殊注意,因为代码中要用到的。
(4)最关键的当然就是Connect里边的代码编写了,这里边的代码其实是很模板化的,没有什么技巧,大家照着案例写就行,关键代码如下:
声明部分:
Show、Hide方法:
AddinInstance_OnConnection事件
在开发过程中,国内与IDE的插件开发相关的资料不是很多,其实IDE的开发其实是很重要的,对公司和个人来说都是很重要的,相关的技术资料如下:
1:http://www.activevb.de/tutorials/tut_addin/addin6.html
2:http://www.mysticboy.com.cn/docs/addin/addin3.htm
(1)控件的容器是UserDocument而不是Form。在VB的IDE环境中那些可链接的窗体,其实都是一个个的UserDocument,因此,不要在Form上开发,而是要在UserDocument上开发,我也很奇怪为什么Microsoft给的模板要是From呢,直接给好UserDocument该有多好。
(2)UserDocument的属性设置,其实UserDocument的属性没有什么特殊的要求,但是有几点要特殊注意,一个是最好把ScrollBasr的属性该为0,这样就不会出现滑块了,还有最好不要做UserDocuemtn启动位置的设置,因为在VB的IDE里边所有的链接窗体的启动位置是自动记忆的,当然也包括大小,因此最好不要设置这些代码,否则就不爽了。
(3)UserDocument的名字一定要特殊注意,因为代码中要用到的。
(4)最关键的当然就是Connect里边的代码编写了,这里边的代码其实是很模板化的,没有什么技巧,大家照着案例写就行,关键代码如下:
声明部分:
Public FormDisplayed As Boolean
Public VbInsTance As VBIDE.VBE
Public WithEvents MenuHandler As CommandBarEvents
Public WithEvents CtlHandler As VBControlsEvents
Private mcbMenuCommandBar As Office.CommandBarControl
Private mCodeAddIn As udCodeDesign
Private mControlAddIn As udControlTemplate
Private mCodeWindow As VBIDE.Window
Private mControlWindow As VBIDE.Window
Private mCodeGuid As String
Private mControlGuid As String
Public VbInsTance As VBIDE.VBE
Public WithEvents MenuHandler As CommandBarEvents
Public WithEvents CtlHandler As VBControlsEvents
Private mcbMenuCommandBar As Office.CommandBarControl
Private mCodeAddIn As udCodeDesign
Private mControlAddIn As udControlTemplate
Private mCodeWindow As VBIDE.Window
Private mControlWindow As VBIDE.Window
Private mCodeGuid As String
Private mControlGuid As String
Show、Hide方法:
Public Sub Hide()
On Error Resume Next
SetVisible False
End Sub
Public Sub Show()
On Error Resume Next
Set mCodeAddIn.VbInsTance = VbInsTance
Set mCodeAddIn.Connect = Me
Set mControlAddIn.VbInsTance = VbInsTance
Set mControlAddIn.Connect = Me
SetVisible True
End Sub
On Error Resume Next
SetVisible False
End Sub
Public Sub Show()
On Error Resume Next
Set mCodeAddIn.VbInsTance = VbInsTance
Set mCodeAddIn.Connect = Me
Set mControlAddIn.VbInsTance = VbInsTance
Set mControlAddIn.Connect = Me
SetVisible True
End Sub
AddinInstance_OnConnection事件
'------------------------------------------------------
'这个方法添加外接程序到 VB
'------------------------------------------------------
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
On Error GoTo error_handler
Dim GuidHelper As New Helper.Guid
'保存 vb 实例
Set VbInsTance = Application
If ConnectMode = ext_cm_External Then
'用于让向导工具栏来启动此向导
Me.Show
Else
Set mcbMenuCommandBar = AddToAddInCommandBar("DeveloperHelper")
'吸取事件
Set Me.MenuHandler = VbInsTance.Events.CommandBarEvents(mcbMenuCommandBar)
End If
'挂接控件管理事件
Set Me.CtlHandler = VbInsTance.Events.VBControlsEvents(Nothing, Nothing)
'将窗体嵌入Vb中
If GetSetting(App.Title, "Settings", "CodeGUID", "0") = "0" Then
mCodeGuid = GuidHelper.NewGuid()
SaveSetting App.Title, "Settings", "CodeGUID", mControlGuid
Else
mCodeGuid = GetSetting(App.Title, "Settings", "CodeGUID", "0")
End If
Set mCodeWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udCodeDesign", "CodeDesign", mCodeGuid, mCodeAddIn)
If GetSetting(App.Title, "Settings", "ControlGUID", "0") = "0" Then
mControlGuid = GuidHelper.NewGuid()
SaveSetting App.Title, "Settings", "ControlGUID", mControlGuid
Else
mControlGuid = GetSetting(App.Title, "Settings", "ControlGUID", "0")
End If
Set mControlWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udControlTemplate", "ControlTemplate", mControlGuid, mControlAddIn)
If ConnectMode = ext_cm_AfterStartup Then
If GetSetting(App.Title, "Settings", "DisplayOnConnect", "0") = "1" Then
'设置这个到连接显示的窗体
Me.Show
End If
End If
Set GuidHelper = Nothing
Exit Sub
error_handler:
MsgBox Err.Description
End Sub
'这个方法添加外接程序到 VB
'------------------------------------------------------
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
On Error GoTo error_handler
Dim GuidHelper As New Helper.Guid
'保存 vb 实例
Set VbInsTance = Application
If ConnectMode = ext_cm_External Then
'用于让向导工具栏来启动此向导
Me.Show
Else
Set mcbMenuCommandBar = AddToAddInCommandBar("DeveloperHelper")
'吸取事件
Set Me.MenuHandler = VbInsTance.Events.CommandBarEvents(mcbMenuCommandBar)
End If
'挂接控件管理事件
Set Me.CtlHandler = VbInsTance.Events.VBControlsEvents(Nothing, Nothing)
'将窗体嵌入Vb中
If GetSetting(App.Title, "Settings", "CodeGUID", "0") = "0" Then
mCodeGuid = GuidHelper.NewGuid()
SaveSetting App.Title, "Settings", "CodeGUID", mControlGuid
Else
mCodeGuid = GetSetting(App.Title, "Settings", "CodeGUID", "0")
End If
Set mCodeWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udCodeDesign", "CodeDesign", mCodeGuid, mCodeAddIn)
If GetSetting(App.Title, "Settings", "ControlGUID", "0") = "0" Then
mControlGuid = GuidHelper.NewGuid()
SaveSetting App.Title, "Settings", "ControlGUID", mControlGuid
Else
mControlGuid = GetSetting(App.Title, "Settings", "ControlGUID", "0")
End If
Set mControlWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udControlTemplate", "ControlTemplate", mControlGuid, mControlAddIn)
If ConnectMode = ext_cm_AfterStartup Then
If GetSetting(App.Title, "Settings", "DisplayOnConnect", "0") = "1" Then
'设置这个到连接显示的窗体
Me.Show
End If
End If
Set GuidHelper = Nothing
Exit Sub
error_handler:
MsgBox Err.Description
End Sub
关键的代码是这句:
Set mCodeWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udCodeDesign", "CodeDesign", mCodeGuid, mCodeAddIn)
语法如下:
CreateToolWindow 方法
创建一个包含指定 UserDocument 对象的新工具窗口。
语法
object.CreateToolWindow (AddInInst, ProgID, Caption, GuidPosition, DocObj) As Window
CreateToolWindow 方法的语法包含下面部分:
部分 描述
object 对象表达式 ,其值是“应用于”列表中的对象。
AddInInst 必需的。外接程序实例变量,表示在开发环境中的外接程序。
ProgID 必需的。串 表示 UserDocument 对象的 progID。
Caption 必需的。串 包括窗口标题。
GuidPosition 必需的。串 包括窗口的唯一标识符。
DocObj 必需的。对象表示 UserDocument 对象。对象将被设置在这个函数的调用中。
记住这些基本上就差不多了,最后完成的效果如下图:
最终完成效果如下图:
在开发过程中,国内与IDE的插件开发相关的资料不是很多,其实IDE的开发其实是很重要的,对公司和个人来说都是很重要的,相关的技术资料如下:
1:http://www.activevb.de/tutorials/tut_addin/addin6.html
2:http://www.mysticboy.com.cn/docs/addin/addin3.htm
发表评论
-
启动NDuiker项目
2005-01-20 17:05 431今天是进驻博客园的第一天,在这里安家真的很不错,十分感谢DuD ... -
NDuiker项目第2天总结
2005-01-21 08:53 627昨天晚上基本上实现了 ... -
NDuiker项目第3天
2005-01-22 22:50 560今天是周六了,原本以为是很轻松的一天,结果只有到了这个时 ... -
NDuiker项目第6天
2005-01-25 16:50 550这几天好忙,也好累呀,这几天是公司项目收尾的阶段,忙的都透不过 ... -
对.Net 类库的一点思索
2005-02-02 09:29 579这些天主要在测试GDI+的 ... -
测试一个网站的想法
2005-02-05 17:07 525由于项目的需要,测试了一下“上海研发公共服务平台” 登录:ht ... -
项目建议书编写总结
2005-02-25 15:46 745昨天完成了项目建议书的编写工作,整个春节期间的工作到今天全部完 ... -
MyIE 增加了RSS功能
2005-02-28 09:54 545今天更新了MyIE,发现MyIE增加了RSS功能,试用了一下, ... -
www.beihua.edu.cn计划摘录
2005-02-28 14:11 756www.beihua.edu.cn工作计划 1:网站后期制作计 ... -
网站调研资料记录
2005-03-01 15:56 603资料整理备忘 1:内外网IP确认 ... -
静静的看书
2005-03-08 17:18 547这几天还是很忙,但是似乎好了很多,因为目前主要是写一个基于Sm ... -
我的Smart Client 的学习笔记
2005-03-09 15:35 1652User Interface Process (UIP) Ap ... -
研发、开发、运营
2005-03-25 12:15 614这些天很忙,网络也不争气,才刚刚好一点。 ... -
当需求变更来临
2005-04-30 14:26 516昨晚已经和老婆安排好5 ... -
重新登录Window2003的域
2005-05-12 09:58 663今天公司要求重新登录Windows2003的域,记录一下,以后 ... -
当不愿意写字得时候
2005-05-16 15:36 675做项目得前期分析得时候,我还是比较喜欢在本子上写写、画画得,通 ... -
远离技术的时候
2005-06-20 11:05 397这一个月一直在忙一个项目,现在项目的可研报告也 ... -
Asp.Net 中使用客户端Activex控件需要注意的事情
2005-08-13 12:57 924案例:Asp.Net +VB制作的Activex控件 操作系统 ... -
Office开发中的测试的与众不同之处
2005-08-22 14:29 676今天修改了一下自己以 ... -
大家确实都很忙
2005-08-27 08:20 706先谈几个技术问题: 1 ...
相关推荐
VB6-Sirk Mini 安装版 最新版 包含插件 增强版 包含 Addins
VB6-Mini 安装程序,比VB6企业版 使用起来简洁的多,其中重要的是该安装程序打包了很多控件,开发人员可以根据需要添加控件进行项目开发。
Vb6-生成python代码插件(金色羽毛),设计窗体可通过插件生成代码
用Visual Basic 6.0编写的OCR识别程序,对数字的识别率高
VB6 - DirectShow WebCam Minimal Code-VBForums
vb6-mini安装包
这是一个vb6.0的mini版安装包,不需要填写任何东西,安装方便,内存小但是功能齐全,保证可以安装
vb6-Theme+UAC
VB6-AES加密算法源码,无错,可直接运行。密钥长度支持128 Bit,192 Bit,256 Bit。支持字符串加密和文件加密。
RTL8211E-VB-CG-原理图参考设计
VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源...
vb6-c#-vb.net 开发包,包含各自实例
VB019-随机应变五颜六色
vb源码-极度扫描vb源码-极度扫描vb源码-极度扫描
VB源码-进程管理VB源码-进程管理VB源码-进程管理
( VB6 Sirk Mini 20190220 ) 1、支持主流操作系统,避免原版安装失败的问题:支持Windows XP、Vista、Win7、Win8、Win10(32位、64位)。 2、保留大部分常用功能,避免精简版过度精简:包含原版完整控件,可以正常...
VB---数据库登录的实例VB---数据库登录的实例VB---数据库登录的实例
VB-PowerWrap 允许开发者在发布他们的程序时不需要再加入一大堆 的 OCX 与 DLL 文件。该程序可以帮助 Visual Basic 程序员在发布他们 的可执行文件时不需要再担心关于其他链接库与 OCX 的问题了。VB-Powe rWrap 允许...
VB6-0环境下的语音识别程序开发方法VB6-0环境下的语音识别程序开发方法.
VB6-API注册表操作模块。可以轻松“建立/删除/修改/注册键值”