1

在我们的 Visual Basic 6.0 程序中,我们使用函数 chr(11) 附加了一些字符串并显示在文本框中。

在 Windows 2003 Server 中,文本框中的值显示为“a box(for chr(11)) 后跟字符串” 在 Windows 7 中,文本框中的值显示为“♂(for chr(11) 后跟字符串” "

谁能建议它为什么会这样?

提前致谢。

4

1 回答 1

2

这可能是字体的差异。

即使使用相同的“面名”,实际安装的字体也会在支持哪些字形等方面有所不同。

请注意,您的程序在任何意义上都不是使用 ASCII,而是使用 ANSI。从程序中的 Unicode 到用于显示的 ANSI 的映射也因区域设置和字符集设置而异。字符集也可能是这里的一个因素。

Chr(11)说“取 11 并将其视为当前代码页中的 ANSI 字符,将其转换为 Unicode,然后将其作为变体字符串返回。”

Chr$(11)通过返回一个字符串来消除一些开销,ChrW$(11)甚至更干净,通过 ANSI 到 Unicode 的转换也跳过了清洗。

更快的是只为这个字符使用命名常量vbVerticalTab

但这些都不会影响display。这更多的是避免不必要的开销的问题。

你依赖的东西是不可靠的,即不可打印的字符总是有一个字形。您看到的那个“盒子”符号意味着该字符没有可用的字形。

即使字符映射小程序也不显示低于 33 (&H21) 的值的字形映射。

于 2013-01-07T14:51:22.807 回答