MFC中也没有CTextDocument
时间: 2024-02-21 07:56:42 浏览: 17
非常抱歉,我的回答再次有误。MFC中确实没有CTextDocument类。
如果你想获取CRichEditCtrl控件中的纯文本,可以调用CRichEditCtrl::GetWindowText()方法获取文本,然后去掉其中的格式信息。你可以使用CRichEditCtrl::GetSel()方法获取当前选择文本的位置,然后使用EM_GETCHARFORMAT消息获取该文本的格式,再根据格式去掉相应的格式信息。
以下是一个示例代码:
```
CString GetPlainTextFromRichEditCtrl(CRichEditCtrl& richEditCtrl)
{
// 获取文本长度
int len = richEditCtrl.GetTextLengthEx(GTL_NUMCHARS);
if (len == 0) {
return _T("");
}
// 获取文本
CString text;
richEditCtrl.GetWindowText(text);
// 去掉格式信息
int start = 0;
int end = 0;
CString plainText;
CHARFORMAT2 cf;
while (end < len) {
richEditCtrl.GetSel(start, end);
richEditCtrl.GetSelectionCharFormat(cf);
CString s = text.Mid(start, end - start);
if (cf.dwMask & CFM_LINK) {
// 如果是链接格式,保留超链接文本
plainText += s;
} else {
// 去掉其他格式信息
plainText += s.SpanExcluding(_T("\r\n"));
}
start = end;
}
return plainText;
}
```
该函数将返回CRichEditCtrl控件中的纯文本。请注意,如果文本中包含超链接,该函数将保留超链接文本。