首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RichEdit.PlainText似乎不会影响任何东西

RichEdit.PlainText似乎不会影响任何东西
EN

Stack Overflow用户
提问于 2013-05-20 21:56:37
回答 2查看 832关注 0票数 0

我正在尝试用BCB6编写类似rtf编辑器的东西,在尝试向我的RichEdit1添加表时遇到了这样的问题:

代码语言:javascript
复制
    RichEdit1->PlainText=true;
    AnsiString ret=RichEdit1->Text;
    ret.Insert(table, RichEdit1->SelStart);
    RichEdit1->Text=ret;
    RichEdit1->PlainText=false;
    RichEdit1->Repaint();

这段代码将格式化文本(表格的代码)添加到RichEdit1,而不是将格式化代码作为纯文本添加并像表格一样显示。

我是不是做错了,或者这可能是其他事情的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-21 13:21:18

PlainText属性仅由Lines->LoadFrom...()Lines->SaveTo...()方法使用,其他方法不能使用。

Text属性仅适用于纯文本。读取该属性将提取RichEdit的文本内容,而不进行格式化。设置该属性根本不会处理RTF代码,RichEdit的文本内容将按原样替换为新文本。

如果您想要将RTF代码插入到RichEdit中,尤其是如果您不想覆盖RichEdit的当前内容,则必须直接使用EM_STREAMIN消息。例如:

代码语言:javascript
复制
DWORD CALLBACK StreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    int numRead = reinterpret_cast<TStringStream*>(dwCookie)->Read(pbBuff, cb);
    if (pcb) *pcb = numRead;
    return 0;
}

代码语言:javascript
复制
TStringStream *strm = new TStringStream(table);

EDITSTREAM es = {0};
es.dwCookie = (DWORD_PTR) strm;
es.pfnCallback = &StreamInCallback;
SendMessage(RichEdit1->Handle, EM_STREAMIN, SF_RTF | SFF_SELECTION, reinterpret_cast<LPARAM>(&es));

delete strm;
票数 0
EN

Stack Overflow用户

发布于 2013-05-23 03:47:06

问题解决了,由于表代码不在{}括号中,所以没有添加格式,在表代码周围添加并使用SendMessage后,程序运行良好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16651140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档