当我尝试加载旧的VB6.0项目时,我的所有阿拉伯文本都出现问题,如图像:
任何帮助?
答案 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资源。