如何在不破坏死键支持的情况下使用ToUnicode?

Rap*_*tor 5 c c++ windows keyboard unicode

类似的问题已经被问,所以我不会浪费时间来重新解释它,已有的讨论,可以在这里找到: 在一个键盘钩子toascii将/ ToUnicode破坏死键

我发布一个新问题的原因是我似乎遇到了一个"解决方案",但我不太确定如何实现它.

这篇博文似乎提出了ToUnicode杀死死键支持问题的解决方案:http: //www.siao2.com/2005/01/19/355870.aspx

但是,我不确定如何实施建议的解决方案.推动正确的方向将非常感激.

需要说明的是,我指的是这个:

有两种方法可以解决这个问题:

1)您可以继续使用相同的信息调用ToUnicode,直到它被清除,然后再次调用它以将状态恢复到原来的状态,如果您从未输入任何内容,或者

2)时,键入您可以查找自己的信息缓存什么意思击键信息,而不必在以后调用的API可以提前,然后加载所有的键盘信息的.

我不太确定如何做这些事情(键盘和国际化远非我的强项),所以任何帮助将不胜感激.

谢谢

MSa*_*ers 5

答案的第一部分是完全没有信息的。但是,第二部分确实有意义。ToUnicode() 应该是一个纯函数,仅充当查询。但是,事实并非如此。但是您可以为所有预期的输入重复调用它,将其存储在自己的查找表中并进行访问。

我建议Microsoft lookDontTouchwFlags参数中添加一个标志。那将是一个微不足道的不中断的API修复。

  • 但是修复win32 API将是一个危险的先例。想想如果他们开始那条路的话,他们将要面对的工作量。 (5认同)