首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求解,Windows程序设计中键盘和多语言的一个有关问题

2013-11-23 
求解,Windows程序设计中键盘和多语言的一个问题最近在看Windows程序设计(第五版),关于第6章键盘有个疑问需

求解,Windows程序设计中键盘和多语言的一个问题
最近在看Windows程序设计(第五版),关于第6章键盘有个疑问需要请教下大家。
书中的原话如下:
“   现在开始进行实验。不使用UNICODE标识符定义来编译KEYVIEW1程序(在本书附带的光盘中,非Unicode版本的KEYVIEW1程序位于RELEASE子目录)。在美国英语版本的Windows下执行该程序,并输入字符『abcde』。 WM_CHAR消息与您所期望的一样:ASCII字符代码0x61、0x62、0x63、0x64和0x65以及字母a、b、c、d和e。

     现在,KEYVIEW1还在执行,选择德语键盘布局。按下=键然后输入一个元音(a、e、i、o或者u)。=键将产生一个WM_DEADCHAR消息,元音产生一个WM_CHAR消息和(单独的)字符代码0xE1、0xE9、0xED、0xF3、0xFA和字符á、é、í、ó或ú。这就是死键的工作方式。   ”

按照书上所说我运行KeyView1的ASCII版本,选择德语键盘布局,然后先后输入 =、a 发现屏幕输出的是问号,截图如下:
求解,Windows程序设计中键盘和多语言的一个有关问题

这跟书上所说的不符,我猜测是因为我用的windows版本是中文的,于是我用虚拟机装了一个原生英文的xp,运行程序发现显示是正确的,和书中一样。截图如下:
求解,Windows程序设计中键盘和多语言的一个有关问题

我的问题是,为什么在英文版的Windows显示正常而中文版windows就显示不对呢?
KEYVIEW1使用的是SYSTEM_FIXED_FONT字体,分别在中文版windows和英文版windows下运行同一章的示例程序StokFont,截图如下:
中文Windows:
求解,Windows程序设计中键盘和多语言的一个有关问题
英文Windows:
求解,Windows程序设计中键盘和多语言的一个有关问题
通过这两张图我发现,0xE1在中、英文版本的Windows的SYSTEM_FIXED_FONT字体中都对应á,那为什么在英文版的Windows显示正常而中文版windows就显示不对呢?
Windows程序设计这本书看得确实有点头大,老是半懂不懂的,在此发帖请教大家,先谢谢大家了。
[解决办法]
对于LZ的执着,真心的敬佩...肯为一个问题装个系统(就算是虚拟机),还能深入的研究这两个表...
个人猜测是可能字符集的问题
unicode字符集:采用unicode编码格式
多字节字符集:采用GB2312编码格式
我估计你的是多字节字符集,用的GB标准,所以变成了?
[解决办法]
在控制面板的区域和语言设置里,最后一个选项卡下,有一个非Unicode程序设置。NT内核的Windows中,非Unicode程序的API调用会被转换层转换为Unicode的,这个过程中会参照非Unicode设置的默认代码页。你可以把这个改成德语或英语试试。中文的代码页是936,IBM的OEM英语是437(命令行),Windows西方语言是1252。
后面两个差异可以从记事本和CMD,都设置成System字体,但是对于某些字符的显示会有不同,就是因为代码页不同。

热点排行