VB中資源文件的多種使用技巧

字號:

一、開發(fā)中英(簡、繁)雙版本
    現(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 資源編輯器窗口中,點擊“編輯字符串表格筆淙肴縵倫柿希?BR>  標識號 中文(中國)
     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 的值設置為 1,則顯示中文,如果把 lang 的值設置為 2,則顯示英文。
    ps:更簡單實用的方法是:把不同語言文字放在同一個標識號ID對應的不同字符串表格中即可。VB 會自動實現(xiàn)多種語言轉換!
    二、 直接播放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