[VB6] 視窗 多語系
在.Net還沒出現之前,用VB6寫多語系,並沒有很難,主要是用GetPrivateProfileString、WritePrivateProfileString兩個API函數,來進行讀檔與寫檔。用法請參考
http://tw.myblog.yahoo.com/cyrex4000/article?mid=766
http://tw.myblog.yahoo.com/cyrex4000/article?mid=769
如果自己有更熟悉的讀檔方式,當然可以不要用這種方式來讀檔。
第一步:依控件名稱,建立語系對應檔案
第二步:判斷檔案內有哪些語系
'*************************************************************************
'**函 數 名:GetLanguage
'**輸 入:)(String() -
'**輸 出:無
'**功能描述:判斷有哪些語系
'**作 者:余小章
'**日 期:2009-01-05 01:18:27
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Function GetLanguage() As String()
On Error Resume Next
Dim strReturn As String, lenReturn As Long, TemStr As Variant
strReturn = vbNullString
If Check = True Then
strReturn = Space(&HFF)
lenReturn = GetPrivateProfileString(vbNullString, vbNullString, vbNullString, strReturn, 256, App.Path & "\" & LanguageFile)
TemStr = Left(strReturn, lenReturn)
TemStr = Replace(TemStr, Chr(0) & Chr(0), Chr(0))
TemStr = Trim(TemStr)
GetLanguage = Split(TemStr, Chr(0))
ReDim GLanguages(UBound(GetLanguage))
GLanguages = GetLanguage
Else
GetLanguage = Split("None")
End If
End Function
第三步:搜尋需改變的控件並改變控件語系
'*************************************************************************
'**函 數 名:ChangeLanguage
'**輸 入:Language(String) -
'**輸 出:無
'**功能描述:搜尋需改變的控件-改變控件語系
'**作 者:余小章
'**日 期:2009-01-05 01:19:33
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Sub ChangeLanguage(Language As String)
Dim i As Long, ctrl As Control
For i = 0 To Forms.Count - 1
For Each ctrl In Forms(i).Controls
Forms(i).Caption = GetString(Language, Forms(i).Name)
Select Case TypeName(ctrl)
Case Is = "ComboBox"
'不做任何事
Case Is = "TextBox"
ctrl.Text = GetString(Language, ctrl.Name)
Case Else
ctrl.Caption = GetString(Language, ctrl.Name)
End Select
Next
Next i
End Sub
範例下載:VB6多語系.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET