1. 程式人生 > >VB使用RES資原始檔技巧

VB使用RES資原始檔技巧

本文介紹了 Visual Basic 中資原始檔的多種使用技巧:①開發中英(簡、繁)雙版本的技巧;②實現“綠色”軟體;③直接播放聲音檔案;④儲存各類圖示、游標圖片等等。



--------------------------------------------------------------------------------

在 Visual Basic 中資原始檔的多種使用技巧


一、 開發中英(簡、繁)雙版本
現在比較流行的軟體都會有中文版、英文版、繁體版等等多個版本,並可以根據系統的語言自動顯示相適應的版本,那麼這個功能在 VB 是如何實現得呢的:
1、 首先通過 API 函式GetSystemDefaultLCID 判斷系統的語言
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 "當前系統為:中文繁體", , "語言"
Case &H804
MsgBox "當前系統為:中文簡體", , "語言"
lang = "1"
Case &H409
MsgBox "當前系統為:英文", , "語言"
lang = "2"
End Select
End Sub
2、然後程式就可以載入儲存在資原始檔(這裡我們就是使用的這種方法)、登錄檔、INI 檔案、文字檔案或其他檔案中的各類字串,以達到達到實現多種語言的目的。
⑴啟動 VB6.0,在“外接程式→外接程式管理器”中載入“Visual Basic 6 資源編輯器”
⑵在 VB 資源編輯器視窗中,點選“編輯字串表格”輸入如下資料:
標識號 中文(中國)
101 例子
102 中文
103 英文
201 Ensample
202 Chinese
203 English
⑶儲存資原始檔,寫如下程式碼:(自定義裝載字元的函式 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 的值設定為 1,則顯示中文,如果把 lang 的值設定為 2,則顯示英文。
二、 實現“綠色”軟體
現在非常流行“綠色”軟體,不需要什麼安裝程式只要一個 EXE 檔案就可以執行程式
了,而在 VB 的

程式設計中有許多地方需要呼叫第三方的控制元件(很難用 API 函式搞定所有的功能),這就需要製做一個安裝程式,把所需要的控制元件、DLL 檔案或其他檔案打包進去了,那麼在 VB 中怎麼用變通的方法實現“綠色”軟體呢,請看:
示例:
1、主程式.EXE
用 VB6.0 編寫的程式,呼叫了 Winsock 控制元件,如果在沒有安裝 VB5.0、6.0 的機器上執行則會出現錯誤,導致程式執行失敗,這時如果按一般的方法,只有把這個程式用 VB5.0、6.0 的安裝程式進行打包,不然只有用用2的方法來解決了。
2、註冊程式.EXE
用 VB6.0 編寫的程式,使用資原始檔的方法,把 Winsock 控制元件封裝到本程式中,在執行主程式.EXE之前,先執行本程式,通過 API 函式 GetSystemDirectory 取得
系統
的 WinddowsSystem 的目錄,然後把 Winsock 控制元件複製到該目錄下,並用 Shell 來完成控制元件的註冊。
⑴啟動 VB6.0,在“外接程式→外接程式管理器”中載入“Visual Basic 6 資源編輯器”
⑵在 VB 資源編輯器視窗中,點選“新增自定義資料”,增加 Winsock 控制元件(C:WinddowsSystemMswinsck.ocx),再雙擊剛剛建立的自定義資源,彈出”編輯屬性”視窗,定義如下:
型別: “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 註釋:自定義函式取得系統的 WinddowsSystem 的目錄
TempFile = LoadResData(101, "OCX") 註釋:用以從資源 (.res) 檔案裝載若干可能型別的資料,並返回一個 Byte 陣列
FileNum = FreeFile
Open TempDir & "Mswinsck.ocx" For Binary Access Write As #FileNum 註釋:新建檔案(把 Winsock 控制元件複製到指定目錄下)
Put #FileNum, , TempFile
Close #FileNum

註釋:Shell "regsvr32 " & TempDir & "Mswinsck.ocx ", vbNormalFocus 註釋:註冊控制元件,有彈出對話方塊
Shell "regsvr32 " & TempDir & "Mswinsck.ocx /s", vbNormalFocus 註釋:註冊控制元件,無彈出對話方塊

MsgBox "註冊成功,現在本程式可正常運行了!!", vbOKOnly, "註冊控制元件"

Unload Me
End Sub


Public Function GetWinSysDir() 註釋:定義讀取WinddowsSystem 的所在目錄的函式
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檔案),使程式顯得更加專業。
⑴啟動 VB6.0,在“外接程式→外接程式管理器”中載入“Visual Basic 6 資源編輯器”
⑵在 VB 資源編輯器視窗中,點選“新增自定義資料”,增加任意的 WAV 檔案,再雙擊剛剛建立的自定義資源,彈出”編輯屬性”視窗,定義如下:
型別: "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 檔案的聲音了。
四、 直接呼叫各類圖示、游標圖片
在一個程式中,我們可能需要呼叫多個圖示、游標、圖片檔案,一般來說我們主要是使用 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下執行通過