在我们的Visual Basic 6.0程序中,我们使用了函数chr(11)附加一些字符串并显示在文本框中。
在Windows 2003 Server中,文本框中的值显示为"a box(for chr(11))后跟一个string"在windows 7中,文本框中的值显示为"♂(for chr(11)后跟字符串"
有谁能告诉我为什么它会这样吗?
可能是字体的不同。
即使使用相同的"face name",实际安装的字体也可能在支持的字形等方面有所不同。
请注意,您的程序使用的不是任何意义上的ASCII,而是ANSI。从程序中的Unicode到用于显示的ANSI的映射也因Locale和Charset设置而异。字符集也可能是一个因素。
Chr(11)
表示"取11并将其视为当前代码页中的ANSI字符,将其转换为Unicode,然后将其作为变体字符串返回。"
Chr$(11)
通过返回字符串消除了一些开销,ChrW$(11)
甚至更简洁,也跳过了通过ansi到unicode转换的清洗。
更快的方法是对这个字符vbVerticalTab
使用命名常量。
你依赖的是不可靠的东西,即不可打印的字符总是有字形。您看到的"方框"符号表示该字符没有可用的字形。
即使字符映射小程序也不会显示低于33 (&H21)的值的字形映射。