VB6.0项目中的阿拉伯语损坏

时间:2015-02-15 13:12:25

标签: vb6

当我尝试加载旧的VB6.0项目时,我的所有阿拉伯文本都出现问题,如图像: enter image description here

任何帮助?

1 个答案:

答案 0 :(得分:0)

这就是帮助中关于国际问题的长篇章节。

  

Visual Basic概念

     

DBCS环境中的字体,显示和打印注意事项

     

使用仅为SBCS字符设计的字体时,DBCS字符可能无法在DBCS版本的Windows中正确显示。在使用英语版本的Visual Basic或任何其他SBCS语言版本开发启用DBCS的应用程序时,需要更改Font对象的Name属性。 Name属性确定用于在控件,运行时图形或打印操作期间显示文本的字体。此属性的默认设置是英文版Visual Basic中的MS Sans Serif。要在DBCS环境中正确显示文本,必须将设置更改为运行应用程序的DBCS环境的相应字体。您可能还需要通过更改Font对象的Size属性来更改字体大小。通常,在大多数东亚平台上,应用程序中的文本将以9磅字体显示,而在欧洲平台上则是8字体字体。

     

这些注意事项也适用于使用您的应用程序打印DBCS字符。

     

如何避免更改字体设置

     

如果您没有任何支持DBCS的字体或者不知道哪种字体适合目标平台,则有几种方法可以解决字体问题。

     

在繁体中文版,简体中文版和韩文版Windows中,有一种称为字体关联的系统功能。例如,使用韩语Windows时,字体关联会自动将应用程序中的任何英文字体映射到韩语字体。因此,即使您的应用程序使用英文字体,您仍然可以看到显示韩文字符。关联的字体由运行时平台的系统注册表中的HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\fontassoc \Associated DefaultFonts中的设置确定。使用系统支持的字体关联,您可以在中文或韩文平台上运行英语应用程序,而无需更改任何字体设置。字体关联在其他平台上不可用,例如日语Windows。

     

另一种选择是使用System或FixedSys字体。这些字体可在每个平台上使用。请注意,System和FixedSys字体的大小变化很小。如果您在这些字体中设置的设置时间(使用Font对象的Size属性)设置的字体大小与用户计算机上的字体大小不匹配,则可能会忽略该设置并截断显示的文本。

     

如何在运行时更改字体

     

即使您有上述选项,这些解决方案也有限制。以下是在运行时更改应用程序中的字体的全局解决方案示例。以下代码适用于任何语言版本的Windows,它将适当的字体应用于参数中指定的Font对象。

Private Const DEFAULT_CHARSET = 1
Private Const SYMBOL_CHARSET = 2
Private Const SHIFTJIS_CHARSET = 128
Private Const HANGEUL_CHARSET = 129
Private Const CHINESEBIG5_CHARSET = 136
Private Const CHINESESIMPLIFIED_CHARSET = 134
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Public Sub SetProperFont(obj As Object)
    On Error GoTo ErrorSetProperFont
    Select Case GetUserDefaultLCID
    Case &H404 ' Traditional Chinese
        obj.Charset = CHINESEBIG5_CHARSET
        obj.Name = ChrW(&H65B0) + ChrW(&H7D30) + ChrW(&H660E) _
         + ChrW(&H9AD4)   'New Ming-Li
        obj.Size = 9
    Case &H411 ' Japan
        obj.Charset = SHIFTJIS_CHARSET
        obj.Name = ChrW(&HFF2D) + ChrW(&HFF33) + ChrW(&H20) + _
         ChrW(&HFF30) + ChrW(&H30B4) + ChrW(&H30B7) + ChrW(&H30C3) + _
         ChrW(&H30AF)
        obj.Size = 9
    Case &H412 'Korea UserLCID
        obj.Charset = HANGEUL_CHARSET
        obj.Name = ChrW(&HAD74) + ChrW(&HB9BC)
        obj.Size = 9
    Case &H804 ' Simplified Chinese
        obj.Charset = CHINESESIMPLIFIED_CHARSET
        obj.Name = ChrW(&H5B8B) + ChrW(&H4F53)
        obj.Size = 9
    Case Else   ' The other countries
        obj.Charset = DEFAULT_CHARSET
        obj.Name = ""   ' Get the default UI font.
        obj.Size = 8
    End Select
    Exit Sub
ErrorSetProperFont:
    Err.Number = Err
End Sub
  

您可以修改此示例代码,使字体适用于其他字体设置,例如打印选项。

     
     

向MSDN发送反馈。请点击此处查看MSDN Online资源。