亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

VB6-IDE改造

系統(tǒng) 2635 0
Vb6的IDE改造基本搞定了,感覺(jué)很爽,前幾天在弄DeveloperHelper的時(shí)候,一直無(wú)法理解為什么無(wú)法將窗口放入IDE的環(huán)境中,而很多好的Add-IN確是可以放入IDE里邊的,在MSDN和網(wǎng)上查閱了一些文章,終于明白了道理,現(xiàn)在將道理記錄一下:

(1)控件的容器是UserDocument而不是Form。在VB的IDE環(huán)境中那些可鏈接的窗體,其實(shí)都是一個(gè)個(gè)的UserDocument,因此,不要在Form上開(kāi)發(fā),而是要在UserDocument上開(kāi)發(fā),我也很奇怪為什么Microsoft給的模板要是From呢,直接給好UserDocument該有多好。

(2)UserDocument的屬性設(shè)置,其實(shí)UserDocument的屬性沒(méi)有什么特殊的要求,但是有幾點(diǎn)要特殊注意,一個(gè)是最好把ScrollBasr的屬性該為0,這樣就不會(huì)出現(xiàn)滑塊了,還有最好不要做UserDocuemtn啟動(dòng)位置的設(shè)置,因?yàn)樵赩B的IDE里邊所有的鏈接窗體的啟動(dòng)位置是自動(dòng)記憶的,當(dāng)然也包括大小,因此最好不要設(shè)置這些代碼,否則就不爽了。

(3)UserDocument的名字一定要特殊注意,因?yàn)榇a中要用到的。

(4)最關(guān)鍵的當(dāng)然就是Connect里邊的代碼編寫(xiě)了,這里邊的代碼其實(shí)是很模板化的,沒(méi)有什么技巧,大家照著案例寫(xiě)就行,關(guān)鍵代碼如下:

聲明部分:

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

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

AddinInstance_OnConnection事件

' ------------------------------------------------------
'
這個(gè)方法添加外接程序到?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?實(shí)例
???? Set ?VbInsTance? = ?Application

????
If ?ConnectMode? = ?ext_cm_External? Then
????????
' 用于讓向?qū)Чぞ邫趤?lái)啟動(dòng)此向?qū)?
????????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
????????????
' 設(shè)置這個(gè)到連接顯示的窗體
????????????Me.Show
????????
End ? If
????
End ? If

????
Set ?GuidHelper? = ? Nothing
????
????
Exit ? Sub
????
error_handler:
????
MsgBox ?Err.Description
End?Sub


關(guān)鍵的代碼是這句:

Set mCodeWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udCodeDesign", "CodeDesign", mCodeGuid, mCodeAddIn)

語(yǔ)法如下:

CreateToolWindow 方法
?????

創(chuàng)建一個(gè)包含指定 UserDocument 對(duì)象的新工具窗口。

語(yǔ)法

object.CreateToolWindow (AddInInst, ProgID, Caption, GuidPosition, DocObj) As Window

CreateToolWindow 方法的語(yǔ)法包含下面部分:

部分 描述
object 對(duì)象表達(dá)式 ,其值是“應(yīng)用于”列表中的對(duì)象。
AddInInst? 必需的。外接程序?qū)嵗兞浚硎驹陂_(kāi)發(fā)環(huán)境中的外接程序。
ProgID? 必需的。串 表示 UserDocument 對(duì)象的 progID。
Caption? 必需的。串 包括窗口標(biāo)題。
GuidPosition? 必需的。串 包括窗口的唯一標(biāo)識(shí)符。
DocObj? 必需的。對(duì)象表示 UserDocument 對(duì)象。對(duì)象將被設(shè)置在這個(gè)函數(shù)的調(diào)用中。

記住這些基本上就差不多了,最后完成的效果如下圖:

最終完成效果如下圖:

VB6-IDE改造

在開(kāi)發(fā)過(guò)程中,國(guó)內(nèi)與IDE的插件開(kāi)發(fā)相關(guān)的資料不是很多,其實(shí)IDE的開(kāi)發(fā)其實(shí)是很重要的,對(duì)公司和個(gè)人來(lái)說(shuō)都是很重要的,相關(guān)的技術(shù)資料如下:
1:http://www.activevb.de/tutorials/tut_addin/addin6.html
2:http://www.mysticboy.com.cn/docs/addin/addin3.htm

VB6-IDE改造


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国内精品在线视频 | 久久精品影院永久网址 | 日日爽| 97在线视频免费观看费观看 | 久久精品国产精品青草图片 | 不卡国产在线 | 久久91精品国产91久久跳舞 | 99热这里有精品 | 久久久亚洲国产精品主播 | 久草在线资源网 | 9191精品国产免费不久久 | 亚洲第一区香蕉_国产a | 在线观看色视频 | 狠狠色丁香婷婷综合欧美 | 国内精品99 | 九月激情网| 色综合婷婷 | 亚洲一级毛片免费在线观看 | 国产成人一区二区三中文 | 久久伦理片 | 成人亚洲国产 | 亚洲精品久久久久久久网站 | 99久久精品国产免看国产一区 | 奇米色在线视频 | 精品99久久 | 国产精品国产三级国产a | 成人毛片18岁女人毛片免费看 | 天天做天天爱天天一爽一毛片 | 6一10周岁毛片在线 717影院理论午夜伦八戒 | 97人人网 | 国产情精品嫩草影院88av | 成年美女 | 亚洲日韩在线视频 | 日本一本一道久久香蕉免费 | 啪啪一级视频 | 国内精品久久影院 | 天天拍拍天天爽免费视频 | 久草新视频 | 精品国产一区二区三区香蕉事 | 久久99免费视频 | 九七影院97影院理论片 |