今天终于利用CRichEditCtrl实现了聊天对话框截取,发送与显示图片。在利用CRichEditCtrl提供的StreamIn来显示复杂文本和图片的时候,由于需要设置SFF_SELECTION(replace the current selection),所以总是容易把其中选中的内容替换掉。造成内容丢失。下面的方法可以解决:
void CMyRichEditCtrl::StreamIn(CMemFile &mf)
{
if(mf.GetLength()==0)return;
long lPrePos=GetTextLength();
EDITSTREAM es;
es.dwCookie=(DWORD)&mf;
es.dwError=0;
mf.SeekToBegin();
es.pfnCallback=CChatEditCtrl::StreamInCallBackFunction;
SetSel(lPrePos+1, -1);//此处即选中为空
long len=CRichEditCtrl::StreamIn(SF_RTF|SFF_SELECTION,es);
}