【问题标题】:TRichEdit and Unicode - different behavior on XP and Win7TRichEdit 和 Unicode - XP 和 Win7 上的不同行为
【发布时间】:2014-01-01 05:12:45
【问题描述】:

在非 unicode Delphi 中(我已尝试使用 D7 和 D2006):

  1. 在表单上放置 TRichEdit 并运行应用程序
  2. 切换到一些“异国情调”的键盘布局(俄语、希腊语等)
  3. 输入一些内容

在 XP 上,一切都很好,我可以看到正常的俄语字母。但是,在 Win7 上,字符是错误的(来自其他语言的重音字母)。如果我从 MS Word 中复制俄语文本并将其粘贴到 RichEdit 中,它看起来还可以。

我怀疑它与 RichEdit 控件版本有关,但有什么办法可以克服它?如果可能的话,我想避免切换到 TTntRichEdit(它似乎可以正常工作),因为我需要更改大量现有代码。

【问题讨论】:

  • 似乎可以在我的 Win7 x64 上与 D5 一起正常工作。但是,如果您在程序运行时切换键盘,应用程序不会检测到它。
  • 这可能无关紧要,但你有没有看过这个Francois关于使用不同版本blogpost的帖子
  • 谢谢梅林,不,我没看过那个。我会努力跟上的。
  • 您想在 unicode windows 版本中使用非 unicode 控件,并在俄语中使用 MBCS?你的代码页是什么?您知道 Delphi 7 上的 TRichEdit 控件是 MBCS 版本,而不是 UNICODE 版本,这是最可能导致您的困惑和问题的原因。代码页在 MBCS/AnsiString Delphi 中非常重要。

标签: delphi unicode windows-7 richedit


【解决方案1】:

当用户按下某个键时,尝试使用AnsiToUtf8AnsiToUnicode 之类的转换。

【讨论】:

  • 在 OnKeyPress 中?谢谢,但不,它不起作用,这对我来说并不奇怪,因为 Key 参数是 Char 并且我不能将两个字节的 char 放入其中。除非有其他方法可以截获消息?
  • 它可能在审核队列中获得了赞成票,我在第一个帖子之间找到了它。这只是那个队列的缺点......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多