【发布时间】:2010-12-19 10:31:34
【问题描述】:
我无法让 RichEdit 控件显示 unicode RTF 文本。我的应用程序是 Unicode,所以所有字符串都是 wchar_t 字符串。
如果我将控件创建为“RichEdit20A”,我可以使用例如SetWindowText,并以正确的格式显示文本。如果我将控件创建为“RichEdit20W”,则使用 SetWindowText 逐字显示文本,即显示所有 RTF 代码。如果我使用 EM_SETTEXTEX 参数,指定代码页 1200,MSDN 告诉我用于指示 unicode,也会发生同样的情况。
我试过使用 StreamIn 函数,但这似乎只有在我以 ASCII 文本流式传输时才有效。如果我在widechars中流式传输,那么我会在控件中得到空文本。我使用 SF_RTF|SF_UNICODE 标志,而 MSDN 提示可能不允许这种组合。
那该怎么办?有什么方法可以在不丢失 RTF 解释的情况下将宽字符放入 RichEdit,还是我需要对其进行编码?我曾考虑尝试 UTF-8,或者可能使用 RTF 中的编码工具,但不确定最佳选择是什么。
【问题讨论】: