几年前,我在使用 Visual Basic 时发现了这个MsgBox
函数的一个错误。我试图寻找它,但没有人说过任何关于它的事情。但这不仅适用于 Visual Basic。它适用于任何使用标准 Windows MessageBox
API 调用的东西。
当标题文本包含多个字符且第一个字符是带有变音符号 ('ÿ') 的小写“y”时会触发该错误。这个角色有什么特别之处?它几乎肯定不是字符本身,而是它的特殊 ASCII 值。'ÿ' 是字符 255 (0xFF),这意味着它是可以存储在无符号字节中的最大值,并且它的所有位都设置为 1。
这个错误有什么作用?好吧,有两种不同的可能性,这取决于标题文本中的字符数。如果标题文本中有偶数个字符(除非是 2),则不会出现消息框,您只会听到警报声。如果标题文本中有两个字符,或者 1 以外的任何奇数(在这种情况下不会触发错误)......然后会发生这种情况:
这还不是全部——消息也将被截断为一行。考虑到此 API 调用的使用频率,这似乎是至少在一个半高调的事件中会发生的错误。互联网上是否有任何关于此的报告,或任何显示可能导致它的原因?也许这是一个与 Unicode 相关的故障,例如记事本中的“灌木隐藏事实”故障?
我制作了一个程序,以防你想玩这个;在这里下载。
或者,将以下内容复制到记事本中,使用.vbs
扩展名保存,然后双击它以显示上面看到的对话框:
MsgBox "Windows 3.1 font, anyone?", 0, "ÿ ODD NUMBER!"
或者对于不同的字体:
MsgBox "I CAN HAS CHEEZBURGER?", 0, "ÿ HImpact"
编辑:似乎如果前四个字符是ÿ
's,即使有奇数个字符,它也不会显示消息。