Без участия контрола я так и не смог найти в инете решение. Были функциии, которые заменяли RTF текст на Text посредством замены RTF символов, но эти функции настолько не предсказуемо работали, что я просто отказался от их использования.
CString GetTextFromRTF(CRichEditControl50W *rchEdit,CString sContent)
{
long res;
// read the text in
EDITSTREAM es;
es.dwError = 0;
es.dwCookie = (DWORD) &sContent;
es.pfnCallback = CBStreamIn;
rchEdit->ModifyStyle(0,SEL_TEXT SEL_MULTICHAR SEL_MULTIOBJECT);
rchEdit->LimitText50W(-1);
// do it.
rchEdit->SetTextTo50WControl(sContent,ST_SELECTION, 1200);
rchEdit->SetSel50W(0, -1);
CHARRANGE cr;
cr.cpMin = 0;
cr.cpMax = -1;
// select all text in richedit ctrl
SendMessage(rchEdit->m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr);
// get number of chars in selected text
SendMessage(rchEdit->m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
int numchars = (cr.cpMax-cr.cpMin+2)*2; //allow for trailing null too
//create a buffer for all those chars
wchar_t* lpsz = (wchar_t*)_alloca(numchars);
lpsz[0] = NULL;
SendMessage(rchEdit->m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpsz);
CString sRes = CString(lpsz);
return sRes;
}
Комментариев нет:
Отправить комментарий