在 Windows 上,如果您有一个包含代理项的 UTF-16 序列,并且将该序列插入到 RichEdit 控件中,则 RichEdit 控件可以很好地处理此问题,并且对于每个代理项对,它只会显示一个字符。
我面临的困难是,当我查询选择时,我得到的是 UTF-16 流中的位置,而不是作为控件中可见字符数的字符位置。我有一个缓慢的解决方案来找出实际位置,但它需要检索文本直到 UTF-16 中的选择,然后自己计算实际字符的数量。
我错过了什么?还有比这更有效的吗?
谢谢,
马努
PS:要查询我使用 EM_EXGETSEL 消息来填充 CHARRANGE 结构的选择。