本人,现在需要实现VB界面国际化语言显示(中,日,英)也就是在不同语言版本的系统上,根据用户的选择,显示国际化的界面。
例如在中文操作系统上,VB界面要可以显示中文的VB界面,也要可以切换为支持显示日文的VB界面。我现在将需要显示的内容做成了相应各个语言的资源文件,但是,现在中文系统下,日文的VB界面就是乱码。
请各位指点。谢谢。

解决方案 »

  1.   

    font.name
    font.charset
    设置了,也没用。
      

  2.   

    我们以前的做法是自己写控件,然后使用unicode输出。
      

  3.   

    请问如何使用Unicoed输出。能否讲详细点,最后有个简单例子描述,谢谢。
      

  4.   

    就是写控件,使用TextOutW/DrawTextW等强制Unicode输出。
      

  5.   

    用户选择语言后要用 SetThreadLocale() 更改一下当前语言,然后设置字体。
      

  6.   

    VB的标准控件是ANSI,若想真正实现全Unicode,所有的控件用SDK创建(API CreateWindowExW)。
    More info on Unicode with Vb6 can be found at http://www.cyberactivex.com/UnicodeTutorialVb.htm
      

  7.   

    个人能力有限,我给出的只是个人的想法:在不同的操作环境下,Windows的内核资源应该是不一样的。
    比如说:
    在简体中文下。里面的应该全是简体中文。
    在繁体中文下。里面的应该全是繁体中文。
    在日文环境下。里面的应该全是日文。你们可能说。比如
    在简体中文中:"三"的编码在 &H1111在繁体中文中:"三"的编码也在 &H1111那在日文中:  "三"的编码也在那里呢?因此,我建议:你先在简体中文中建立资源文件。 
    我建议:你先在繁体中文中建立资源文件。 
    我建议:你先在日文中建立资源文件。 
    我建议:你先在法文中建立资源文件。 
    。调用的时候,在不同的操作系统中调用相应的资源文件。 

      

  8.   


    网上找了找,如下方式可以在中文系统下,显示日文“昭和”,但是不方便字符串操作,例如字符串连接,截取等等操作就不方便,是否还有其他好的建议。谢谢。
      Private Declare Function TextOut Lib "gdi32" Alias "TextOutW" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As Long, ByVal nCount As Long) As LongPrivate Sub Form_Load()
      Dim s     As String, b(10)       As Byte
      Me.AutoRedraw = True
      Me.Font.Name = "宋体"     
      Me.Font.Size = 24       '看得清楚点
      '   日文年代“昭和”
      b(0) = &H7C
      b(1) = &H33
      TextOut Form1.hdc, 0, 20, VarPtr(b(0)), 2
      End Sub
      

  9.   

    有个想法不知道可行否在数据库中建立3中语言的说明表 比如 “确定” 中文的 ,英文的,日文的
    在主界面上加个按钮 切换选择哪种语言 然后去数据库中select出来显示在 控件上
      

  10.   

    首先你把法语相关字符串保存在txt文本中 (保存用unicode格式 数据库中用 nvarchar格式)
    部件中使用 MS FORM2.0相关控件 在此用TEXTBOX作为案例
    Private Sub Command1_Click()
      Dim a() As Byte
      Open "e:\1.txt" For Binary As #1
      ReDim a(LOF(1) - 1)
      Get #1, , a
    '  TextBox1.Font = "WST_Fren"
      TextBox1.Font.Charset = 0
      TextBox1 = a
    End Sub
      

  11.   

    Private Sub Command1_Click()
      Dim a() As Byte
      Open "e:\1.txt" For Binary As #1
      ReDim a(LOF(1) - 3)
      Get #1,3, a
    '  TextBox1.Font = "WST_Fren"
      TextBox1.Font.Charset = 0
      TextBox1 = a
    End Sub
      

  12.   

    因为我使用VSprinter控件,做打印。现在只能使用unsigned的方法,可以显示出来。但是vsprinter.textwidth("文本内容"),获取显示内容的文字宽度时,因为unicode会乱码,所以宽度值获取不准确。不知道有没有其他方法。
    现在结贴如下:unsigned:40分
    ayalicer:10分谢谢其他各位的帮忙。