文章編號: 190952 - 上次校閱: 2008年1月30日 - 版次: 3.1

PRB:升級專案以使用新的 VB6 控制項

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
本文曾發行於 CHT190952
全部展開 | 全部摺疊

徵狀

當 Visual Basic 6.0 載入 Visual Basic 5.0 專案時,下列控制項不會自動更新:
  • Comctl32.ocx
  • Comct232.ocx
  • Mschart.ocx
您必須手動將專案升級至新的 Visual Basic 6.0 控制項:
  • Mscomctl.ocx
  • Mscomct2.ocx
  • Mschrt20.ocx
注意:Visual Basic 說明文件中「升級使用 Windows 通用控制項的應用程式」主題中,指出這些控制項會自動升級,這是不正確的。特別是,下面的陳述是錯誤的:
當一個在 Visual Basic 5 中建立並使用了這些控制項的應用程式,第一次在 Visual Basic 6 中載入時,將出現一個對話方塊提示您有新版本的控制項可用,該控制項可以被升級。此時,您可以選取升級該專案成為新控制項,或者繼續使用舊版本的控制項。

發生的原因

這個行為是依產品設計的。新控制項無法和舊版的控制項回溯相容,並且依照 COM 的規則,新控制項會有新的檔案名稱與新的 GUID。這樣可避免應用程式破壞使用舊版控制項的現有應用程式。因為新控制項有新名稱與新 GUID,所以也會有新的 Typelib。當您載入 Visual Basic 專案時,它會檢查 Typelib 的版本。然而,Visual Basic 並不知道控制項已經更新,因為新控制項的 Typelib 與舊版控制項的 Typelib 的 GUID 不同。

解決方案

若要將專案升級為較新的版本,請使用下列方法之一:
  • 從下列網站中下載「ActiveX 控制項更新公用程式」(ActiveX Control Update Utility):
    http://msdn.microsoft.com/vbasic/downloads/axupgrade.asp (http://msdn.microsoft.com/vbasic/downloads/axupgrade.asp)
  • Manually update your project and from files using the following steps:
  1. 在文字編輯器中 (例如 [記事本]) 開啟 .vbp 檔,然後將參考舊版 .ocx 的那幾行改成下列:
          Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
          Object={86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCT2.OCX
          Object={65E121D4-0C60-11D2-A9FC-0000F8754DA1}#2.0#0; MSCHRT20.OCX
    
    					
  2. 儲存並關閉 .vbp 檔。
  3. 在文字編輯器中開啟任何使用這些控制項之一的 .frm 檔 (或 .ctl 檔),然後將參考舊版 .ocx 的那幾行改成:
        Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
        Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCT2.OCX"
        Object = "{65E121D4-0C60-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCHRT20.OCX"
    
    					
  4. 將參考舊程式庫的所有文字變更成新的程式庫名稱。您必須將 ComCtlLib、Comctl2 與 MSChartLib 改成 MSComCtlLib、MSComCtl2 與 MSChart20Lib。例如,將:
           ComctlLib.ImageList
    
       變更為
    
           MSComctlLib.ImageList
    
    					
  5. 儲存並關閉該檔。當您在 Visual Basic 6.0 中開啟此專案時,它就會使用新的 Mscomctl.ocx、Mscomct2.ocx 或 Mschrt20.ocx 控制項。
注意:
  • 重要:在編輯 .vbp、.frm 或 .ctl 檔之前,您應該要備份專案中的所有檔案。
  • 雖然步驟 1 與步驟 2 中所列的物件很類似,但它們卻不完全相同,如果沒有將每一項準確的複製到正確的檔案中,升級作業就無法運作正常。
  • 當您試圖載入專案時,如果收到一個訊息,指出標頭已經毀損,您可能是複製錯誤。請使用您的備份檔案,然後重複執行此程序。
  • 如果您想要繼續使用舊版的這些控制項,則 Comctl32.ocx 與 Comct232.ocx 是位於 Visual Basic 6.0 產品的 CD-ROM 的 [\OS\System] 目錄中。Mschart32.ocx 則是位於 [\Common\Tools\VB\Controls] 目錄中。

這篇文章中的資訊適用於:
  • Microsoft Plus!95 Standard Edition
  • Microsoft Reader's Digest Complete Do-It-Yourself Guide
  • Microsoft Visual Basic 6.0 Enterprise Edition
關鍵字:?
kbcomctrls kbprb KB190952
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。