求助CRichEditCtrl的问题
我想在里面输出大量的不同颜色的文本,目前是这么实现的:
void CRichEditCtrlEx::SetRTF(CString sRTF) //sRTF是带颜色信息的文本
{
EDITSTREAM es;
es.dwError = 0;
es.pfnCallback = CBStreamIn;
es.dwCookie = (DWORD) &sRTF;
StreamIn(SF_RTF, es);
}
DWORD CALLBACK CRichEditCtrlEx::CBStreamIn(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CString *pstr = (CString *) dwCookie;
if (pstr->GetLength() < cb) {
*pcb = pstr->GetLength();
memcpy(pbBuff, (LPCSTR) *pstr, *pcb);
pstr->Empty();
} else {
*pcb = cb;
memcpy(pbBuff, (LPCSTR) *pstr, *pcb);
*pstr = pstr->Right(pstr->GetLength() - cb);
}
return 0;
}
可是每当我输出了几万字符后,就再也无法输出了。
似乎是CRichEditCtrl只能容纳这么多字符?还是有其他的原因,怎么解决呢?
或者有没有其他办法实现输出大量的带颜色的文本?