在 Visual Basic 中資源文件的多種使用技巧 武漢 艾軍 摘要 本文介紹了 Visual Basic 中資源文件的多種使用技巧:① 開發(fā) 中英(簡、繁)雙版本的技巧;②實現(xiàn)“綠色”軟件;③直接播放聲音文件;④保存各類圖標、光標圖片等等。 關(guān)鍵詞 資源文件 一、 開發(fā)
在 Visual Basic 中資源文件的多種使用技巧 武漢 艾軍 摘要 本文介紹了 Visual Basic 中資源文件的多種使用技巧:①開發(fā)中英(簡、繁)雙版本的技巧;②實現(xiàn)“綠色”軟件;③直接播放聲音文件;④保存各類圖標、光標圖片等等。 關(guān)鍵詞 資源文件
現(xiàn)在比較流行的軟件都會有中文版、英文版、繁體版等等多個版本,并可以根據(jù)系統(tǒng)的語言自動顯示相適應的版本,那么這個功能在 VB 是如何實現(xiàn)得呢的: 1、 首先通過 API 函數(shù)GetSystemDefaultLCID 判斷系統(tǒng)的語言 Option Explicit Dim lang As String Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long Private Sub Form_Load() Dim LocaleID As Long LocaleID = GetSystemDefaultLCID Select Case LocaleID Case &H404 MsgBox "當前系統(tǒng)為:中文繁體", , "語言" Case &H804 MsgBox "當前系統(tǒng)為:中文簡體", , "語言" lang = "1" Case &H409 MsgBox "當前系統(tǒng)為:英文", , "語言" lang = "2" End Select End Sub 2、然后程序就可以加載保存在資源文件(這里我們就是使用的這種方法)、注冊表、INI 文件、文本文件或其他文件中的各類字符串,以達到達到實現(xiàn)多種語言的目的。 ⑴啟動 VB6.0,在“外接程序→外接程序管理器”中加載“Visual Basic 6 資源編輯器” ⑵在 VB 資源編輯器窗口中,點擊“編輯字符串表格”輸入如下資料: 標識號 中文(中國) 101 例子 102 中文 103 英文 201 Ensample 202 Chinese 203 English ⑶保存資源文件,寫如下代碼:(自定義裝載字符的函數(shù) LoadString) Sub LoadString() Me.Caption = LoadResString(Int(lang & "01")) Command1(0).Caption = LoadResString(Int(lang & "02")) Command1(1).Caption = LoadResString(Int(lang & "03")) End Sub ⑷怎么樣一個簡單的中英雙版本的程序就做出來了,如果把 lang 的值設(shè)置為 1,則顯示中文,如果把 lang 的值設(shè)置為 2,則顯示英文。 二、 實現(xiàn)“綠色”軟件 現(xiàn)在非常流行“綠色”軟件,不需要什么安裝程序只要一個 EXE 文件就可以運行程序 了,而在 VB 的編程中有許多地方需要調(diào)用第三方的控件(很難用 API 函數(shù)搞定所有的功能),這就需要制做一個安裝程序,把所需要的控件、DLL 文件或其他文件打包進去了,那么在 VB 中怎么用變通的方法實現(xiàn)“綠色”軟件呢,請看: 示例: 1、主程序.EXE 用 VB6.0 編寫的程序,調(diào)用了 Winsock 控件,如果在沒有安裝 VB5.0、6.0 的機器上運行則會出現(xiàn)錯誤,導致程序運行失敗,這時如果按一般的方法,只有把這個程序用 VB5.0、6.0 的安裝程序進行打包,不然只有用用2的方法來解決了。 2、注冊程序.EXE 用 VB6.0 編寫的程序,使用資源文件的方法,把 Winsock 控件封裝到本程序中,在運行主程序.EXE之前,先運行本程序,通過 API 函數(shù) GetSystemDirectory 取得系統(tǒng)的 WinddowsSystem 的目錄,然后把 Winsock 控件復制到該目錄下,并用 Shell 來完成控件的注冊。 ⑴啟動 VB6.0,在“外接程序→外接程序管理器”中加載“Visual Basic 6 資源編輯器” ⑵在 VB 資源編輯器窗口中,點擊“添加自定義資料”,增加 Winsock 控件(C:WinddowsSystemMswinsck.ocx),再雙擊剛剛創(chuàng)建的自定義資源,彈出”編輯屬性”窗口,定義如下: 類型: “OCX” 標識號: 101 語言: 中文(中國) ⑶保存資源文件,寫如下代碼: Option Explicit Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Const MAX_PATH = 260 注釋:定義足夠長的字符串 Private Sub Form_Load() Dim TempFile() As Byte Dim FileNum As Integer Dim TempDir As String TempDir = GetWinSysDir 注釋:自定義函數(shù)取得系統(tǒng)的 WinddowsSystem 的目錄 TempFile = LoadResData(101, "OCX") 注釋:用以從資源 (.res) 文件裝載若干可能類型的數(shù)據(jù),并返回一個 Byte 數(shù)組 FileNum = FreeFile Open TempDir & "Mswinsck.ocx" For Binary Aclearcase/" target="_blank" >ccess Write As #FileNum 注釋:新建文件(把 Winsock 控件復制到指定目錄下) Put #FileNum, , TempFile Close #FileNum 注釋:Shell "regsvr32 " & TempDir & "Mswinsck.ocx ",vbNormalFocus 注釋:注冊控件,有彈出對話框 Shell "regsvr32 " & TempDir & "Mswinsck.ocx /s", vbNormalFocus 注釋:注冊控件,無彈出對話框 MsgBox "注冊成功,現(xiàn)在本程序可正常運行了??!", vbOKOnly, "注冊控件" Unload Me End Sub Public Function GetWinSysDir() 注釋:定義讀取WinddowsSystem 的所在目錄的函數(shù) Dim S As String, Length As Long S = String(MAX_PATH, 0) 注釋:賦值 Length = GetSystemDirectory(S, MAX_PATH) 注釋:S為取得目錄,MAX_PATH 為長度 S = Left(S, InStr(S, Chr(0)) - 1) 注釋:去掉多余的空格 GetWinSysDir = S End Function 注釋:補充:S 和 MAX_PATH 的值是可以隨便賦的, 注釋:如: Dim S As String * 20 注釋: Length = GetSystemDirectory(S, 20) 3、補充說明 在用 VB6.0 保存上述兩個程序后,請再使用 VB5.0 重新打開這兩個程序,并編譯為主程序.EXE、注冊文件.EXE。(用 VB5.0 編譯的程序,在 Win98、2000 下不需要任何 DLL 文件) 程序運行 4、程序運行 將主程序.EXE、注冊文件.EXE兩個文件,復制到任意機器上,先運行注冊文件.EXE注冊第三方的控件,再運行主程序.EXE,就不會有任何的錯誤了,一個變通的“綠色”軟件就完成了。 三、 直接播放EXE文件中的聲音文件 使用資源文件,可以直接在在EXE文件中播放聲音文件(WAV文件),使程序顯得更加專業(yè)。 ⑴啟動 VB6.0,在“外接程序→外接程序管理器”中加載“Visual Basic 6 資源編輯器” ⑵在 VB 資源編輯器窗口中,點擊“添加自定義資料”,增加任意的 WAV 文件,再雙擊剛剛創(chuàng)建的自定義資源,彈出”編輯屬性”窗口,定義如下: 類型: "WAVE" 標識號: 102 語言: 中文(中國) ⑶保存資源文件,寫如下代碼: Option Explicit Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long Public Const SND_ASYNC = &H1& Public Const SND_MEMORY = &H4& Private Sub Command5_Click() 注釋:播放 WAV 文件 Dim bArr() As Byte bArr = LoadResData(102, "WAVE") sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY End Sub ⑷按 F5 運行本程序,點擊 Command 按鈕,就可以聽到你選定的 WAV 文件的聲音了。 四、 直接調(diào)用各類圖標、光標圖片 在一個程序中,我們可能需要調(diào)用多個圖標、光標、圖片文件,一般來說我們主要是使用 ImageList 控件,不過其時使用資源文件是最好的方法(可以少使用一個控件呀)。 ⑴啟動 VB6.0,在“外接程序→外接程序管理器”中加載“Visual Basic 6 資源編輯器” ⑵在 VB 資源編輯器窗口中,點擊“添加光標”,“添加圖標”,“添加位圖”,裝載所需要的文件。 ⑶程序代碼如下: Me.Icon = LoadResPicture(101, vbResIcon) 注釋:加載圖標 Picture1.Picture = LoadResPicture(101, vbResBitmap) 注釋:加載位圖 Command1.MouseIcon = LoadResPicture(101, vbResCursor) 注釋:加載光標 五、到此為此資源文件的多種使用技巧全部介紹完畢,希望這些技巧對大家的編程有幫助,上述程序全部在 Win98、VB5.0或6.0下運行通過,如果大家還有什么問題,可到 www.d1vb.com 來我們一起討論。 原文轉(zhuǎn)自:http://www.
說明:該文章系網(wǎng)友上傳分享,若未進行原創(chuàng)聲明,則表明該文章系轉(zhuǎn)載自互聯(lián)網(wǎng);若該文章內(nèi)容涉嫌侵權(quán),請及時向上學吧網(wǎng)站投訴>>
|
|