|
dustrial
Standard)。从0x81到0x9F以及从0xE0到0xFF的大多数字元代码实际上只是双位元组代码的第一个位元组,其第二个位元组通常在0x40到0xFC的范围内(关於这些代码的完整表格,请参见Nadine
Kano书中的附录G)。
现在,我们就可以看看KEYVIEW1中的问题在哪里:如果您安装了希腊键盘布局并键入『abcde』,不考虑执行的Windows版本,Windows将产生WM_CHAR讯息和字元代码0xE1、0xE2、0xF8、0xE4和0xE5。但只有执行带有希腊系统字体的希腊版Windows时,这些字元代码才能与 t、b、y、d 和 e 相对应。
如果您安装了俄语键盘布局并敲入『abcde』,不考虑所使用的Windows版本,Windows将产生WM_CHAR讯息和字元代码0xF4、0xE8、0xF1、0xE2和0xF3。但只有在使用俄语版Windows或者使用斯拉夫字母表的其他语言版,并且使用斯拉夫系统字体时,这些字元代码才会与字元 φ、и、с、в 和 у 相对应。
如果您安装了德语键盘布局并按下=键(或者位於同一位置的键),然後按下a、e、i、o或者u键,不考虑使用的Windows版本,Windows将产生WM_CHAR讯息和字元代码0xE1、0xE9、0xED、0xF3和0xFA。只有执行西欧版或者美国版的Windows时,也就是说有西欧系统字体,这些字元代码才会和字元amp;nbsp;á、é、í、ó 和 ú 相对应。
如果安装了美国英语键盘布局,则您可在键盘上键入任何字元,Windows将产生WM_CHAR讯息以及与字元正确匹配的字元代码。
Unicode怎么样?
我在第二章谈到过Windows
NT支援的Unicode有助於为国际市场程式写作。让我们编译一下定义了UNICODE识别字的KEYVIEW1,并在不同版本的Windows
NT下执行(在本书附带的光碟中,Unicode版的KEYVIEW1位於DEBUG目录中)。
如果程式编译时定义了UNICODE识别字,则「KeyView1」视窗类别就用RegisterClassW函式注册,而不是RegisterClassA函式。这意味著任何带有字元 |