在我们的 Visual Basic 6.0 程序中,我们使用函数 chr(11) 附加了一些字符串并显示在文本框中。
在 Windows 2003 Server 中,文本框中的值显示为“a box(for chr(11)) 后跟字符串” 在 Windows 7 中,文本框中的值显示为“♂(for chr(11) 后跟字符串” "
谁能建议它为什么会这样?
提前致谢。
在我们的 Visual Basic 6.0 程序中,我们使用函数 chr(11) 附加了一些字符串并显示在文本框中。
在 Windows 2003 Server 中,文本框中的值显示为“a box(for chr(11)) 后跟字符串” 在 Windows 7 中,文本框中的值显示为“♂(for chr(11) 后跟字符串” "
谁能建议它为什么会这样?
提前致谢。
这可能是字体的差异。
即使使用相同的“面名”,实际安装的字体也会在支持哪些字形等方面有所不同。
请注意,您的程序在任何意义上都不是使用 ASCII,而是使用 ANSI。从程序中的 Unicode 到用于显示的 ANSI 的映射也因区域设置和字符集设置而异。字符集也可能是这里的一个因素。
Chr(11)
说“取 11 并将其视为当前代码页中的 ANSI 字符,将其转换为 Unicode,然后将其作为变体字符串返回。”
Chr$(11)
通过返回一个字符串来消除一些开销,ChrW$(11)
甚至更干净,通过 ANSI 到 Unicode 的转换也跳过了清洗。
更快的是只为这个字符使用命名常量vbVerticalTab
。
但这些都不会影响display。这更多的是避免不必要的开销的问题。
你依赖的东西是不可靠的,即不可打印的字符总是有一个字形。您看到的那个“盒子”符号意味着该字符没有可用的字形。
即使字符映射小程序也不显示低于 33 (&H21) 的值的字形映射。