如何在 CRichEditCtrl 中禁用 RTF 表格边框?

Posted

技术标签:

【中文标题】如何在 CRichEditCtrl 中禁用 RTF 表格边框?【英文标题】:How to disable RTF table borders in an CRichEditCtrl? 【发布时间】:2015-01-15 07:49:26 【问题描述】:

我遇到了 CRichEditCtrl 的问题。我想使用表格来格式化要显示的生成文本。在 rtf 1.5 specs 它说,我必须指定一个表格边框来显示任何但显然 CRichEditCtrl 的一些默认设置仍然设置它们。

这段代码:

    CString sDoc =_T("\\rtf1\\ansi\\deff0" 
                "\\trowd\\trgaph144 "
                    "\\cellx500"
                    "\\cellx3000"
                    "\\cellx5000"
                    "\\cellx7000"
                    "\\intbl 01 \\cell"
                    "\\intbl Hexachlorbenzol \\cell"
                    "\\intbl 500.00 mg \\cell"
                    "\\intbl WST \\cell"
                "\\row"
            "");

EDITSTREAM es;
es.dwCookie = (DWORD)&sDoc;
es.pfnCallback = MEditStreamInCallback;
edtInfo.StreamIn(SF_RTF, es);

结果:

我尝试将单元格的边框宽度设置为 0,将边框颜色设置为白色,设置为 0。

"\\clbrdrt\\brdrw0\\clbrdrl\\brdrw0\\clbrdrb\\brdrw0\\clbrdrr\\brdrw0"

 "\\clbrdrt\\brdrcf0\\clbrdrl\\brdcf0\\clbrdrb\\brdrcf0\\clbrdrr\\brdrcf0"

这两种方法都不起作用。结果总是一样的。

也许这里有人知道如何禁用这个,很明显,默认边框。我想禁用或隐藏这个边框。可能控件里面有设置,我还没发现。

【问题讨论】:

如果您找到答案,请告诉我。我认为这是控制的一些问题。我可以正确格式化表格以隐藏或显示我想要的任何边框,并使用 Word 打开该 RTF 并正确显示。使用 Rich Edit 控件,它总是显示边框。 【参考方案1】:

Rich Edit 3 控件始终显示带边框的表格。如果您希望控制边界,可以升级您的代码以使用 Rich Edit 4.1。如果您对表格做很多事情,您会发现 Rich Edit 4.1 更胜一筹。它支持单元格中的多个段落、单元格中的文本对齐等。

有关要加载的 DLL 和 Rich Edit 4.1 的类名,请参见 https://msdn.microsoft.com/en-us/library/windows/desktop/bb787873%28v=vs.85%29.aspx。 Rich Edit 4.1 可用于 Windows XP SP1 及更高版本。有关不同版本的更多信息,请参阅http://blogs.msdn.com/b/murrays/archive/2006/10/14/richedit-versions.aspx

【讨论】:

以上是关于如何在 CRichEditCtrl 中禁用 RTF 表格边框?的主要内容,如果未能解决你的问题,请参考以下文章

MFC - 打印 rtf 文档

CRichEditCtrl 如何忽略按键?

如何将 Unicode 支持添加到 CRichEditCtrl?

如何确定 CRichEditCtrl 中的文本选择是不是具有多种字体大小?

CRichEditCtrl 可以知道某人何时设置其文本吗?

CRichEditCtrl 在使用 MFC 编写的共享 dll 中无法正常工作?