请在美国英语版的Windows NT下执行Unicode版的KEYVIEW1。这里假定您已经安装了至少三种我们试验过的键盘布局-即德语、希腊语和俄语。
使用美国英语版的Windows NT,并安装了英语或者德语的键盘布局,Unicode版的KEYVIEW1在工作时将与非Unicode版相同。它将接收相同的字元代码(所有0xFF或者更低的值),并显示同样正确的字元。这是因为最初的256个Unicode字元与Windows中使用的ANSI字元集相同。
现在切换到希腊键盘布局,并键入『abcde』。WM_CHAR讯息将含有Unicode字元代码0x03B1、 0x03B2、0x03C8、 0x03B4和0x03B5。注意,我们先看到的字元代码值比0xFF高。这些Unicode字元代码与希腊字母 t、b、y、d 和 e 相对应。不过,所有这五个字元都显示为方块!这是因为SYSTEM_FIXED_FONT只含有256个字元。
现在切换到俄语键盘布局,并键入『abcde』。KEYVIEW1显示WM_CHAR讯息和Unicode字元代码0x0444、0x0438、0x0441、0x0432和0x0443,这些字元对应於斯拉夫字母 φ、и、с、в 和 у。不过,所有这五个字母也显示为实心方块。
简言之,非Unicode版的KEYVIEW1显示错误字元的地方,Unicode版的KEYVIEW1就显示实心方块,以表示目前的字体没有那种特殊字元。虽然我不愿说Unicode版的KEYVIEW1是非Unicode版的改进,但事实确实如此。非Unicode版显示错误字元,而Unicode版不会这样。
Unicode和非Unicode版KEYVIEW1的不同之处主要在两个方面。
首先,WM_CHAR讯息伴随一个16位元字元代码,而不是8位元字元代码。在非Unicode版本的KEYVIEW1中,8位元字元代码的含义取决於目前活动的键盘布局。如果来自德语键盘,则0xE1代码表示 á,如果来自希腊语键盘则代表 a,如果来自俄语键盘则代表 s