gpt4 book ai didi

c++ - 为什么 CRichEditControl 隐藏单词周围的边框

转载 作者:行者123 更新时间:2023-11-28 04:58:12 26 4
gpt4 key购买 nike

我正在使用 CRichEditCtrl (RichEdit20A) 显示 rtf 文本:

m_reText.SetWindowText(strRtfText);

问题是控件不会像这样在 rtf-text 中的单词周围显示边框:

{\rtf1
\box\brdrdot
Hello World
}

我也按照它建议的方式尝试了 RichEdit5.0 here ,但结果是一样的,不显示边框。但是,如果我将文本保存在 .rtf 文件中并在 MSWord 或 Libre/OpenOffice 编辑器中打开它,文本周围的虚线边框会正确显示:

enter image description here

为什么 CRichEditControl 在我的案例中隐藏了边框?请帮忙,如果有任何建议,我将不胜感激。

最佳答案

您可以使用丰富的编辑来显示表格和边框。以下将显示一个带有实线边框的框:

str = L"{\\rtf1\
\\trowd\\trgaph72 \
\\clbrdrt\\brdrdot\\clbrdrl\\brdrdot\\clbrdrb\\brdrdot\\clbrdrr\\brdrdot \
\\cellx3000 TEXT\\intbl\\cell \
\\row\\pard\\par\
}";

如果您在 Microsoft Word 中运行它,它会像预期的那样显示虚线。 RichEdit 不会像它应该的那样处理虚线边框,或者它可能需要不同的格式。如果您从 Word 中保存文件,它仍然不显示虚线。

如果您不需要虚线,则使用这些更简单的示例在 RichEdit 中显示框:

CString str;
str = L"{\\rtf1\
\\trowd\\trgaph72 \
\\cellx3000 TEXT\\intbl\\cell \
\\row\\pard\\par\
}";

str = L"\
{\\rtf1\\ansi\\deff0\
\\trowd\
\\cellx1000\
\\cellx2000\
\\cellx3000\
\\ TEXT1\\cell\
\\ TEXT2\\cell\
\\ TEXT3\\cell\
\\row\
}";

另见 link

请注意,CRichEditCtrl::SetWindowText 将简单地调用 ::SetWindowText WinAPI,它将字符串设置为纯文本。

使用 CRichEdit::StreamIn 设置原始 rtf 字符串。在您的情况下,您可能正在使用自己的类来覆盖 CRichEditCtrl::SetWindowText 并运行必要的流。


尝试以下方法从 Word 的拼写检查 RichEdit 中获取 rtf 字符串:

DWORD __stdcall rtfstreamget(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CStringA text;
text.GetBufferSetLength(cb);
CStringA *ptr = (CStringA*)dwCookie;
for(int i = 0; i < cb; i++)
text.SetAt(i, *(pbBuff + i));
*ptr += text;
*pcb = text.GetLength();
text.ReleaseBuffer();
return 0;
}

bool GetRTF(hWnd, CString &sW)
{
CStringA sA;
EDITSTREAM es{ 0 };
es.dwCookie = (DWORD_PTR)&sA;
es.pfnCallback = rtfstreamget;
edit.StreamOut((CP_UTF8 << 16) | SF_USECODEPAGE | SF_RTF, es);
SendMessage(hWnd, EM_STREAMOUT,
(CP_UTF8 << 16) | SF_USECODEPAGE | SF_RTF, (LPARAM)&es);
sW = CA2W(sA, CP_UTF8);
return es.dwError == 0;
}

CStringW s;
GetRTF(msword_spellcheck_hwindow, str);

关于c++ - 为什么 CRichEditControl 隐藏单词周围的边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46715506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com