[VB6] 視窗 多語系

[VB6] 視窗 多語系

在.Net還沒出現之前,用VB6寫多語系,並沒有很難,主要是用GetPrivateProfileString、WritePrivateProfileString兩個API函數,來進行讀檔與寫檔。用法請參考

http://tw.myblog.yahoo.com/cyrex4000/article?mid=766

http://tw.myblog.yahoo.com/cyrex4000/article?mid=769

如果自己有更熟悉的讀檔方式,當然可以不要用這種方式來讀檔。

第一步:依控件名稱,建立語系對應檔案

1

 

第二步:判斷檔案內有哪些語系

'*************************************************************************
'**函 數 名: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

 

3 2

範例下載:VB6多語系.rar

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo