poniewaz jeszcze nikt nie odkleil tego postu to pozwole sobie dodtac kod który <ort>slurzy </ort>do wprowadzanai i wyciagania z kontrolik CRichEdit stringów z formatowanym textem w RTF-ie
[code]
DWORD CALLBACK CMyRichView::FromStringToRich(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;
}
DWORD CALLBACK CMyRichView::FromRichToString(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
char cLastChar;
CString *pStr = (CString )dwCookie;
cLastChar=(pbBuff+cb-1);
*(pbBuff+cb-1)=0;
*pStr+=(LPCSTR)pbBuff;
*(pbBuff+cb-1)=cLastChar;
*(pbBuff+cb-1)=0;
*pStr+=cLastChar;
*pcb=cb;
return 0;
}
void CMyRichView::GetRichText(CString& sString,bool bSelected/* =true */)
{
sString.Empty();
EDITSTREAM es = {(DWORD)&sString, 0, FromRichToString};
if(bSelected==true)
GetRichEditCtrl().StreamOut(SF_RTF| SFF_SELECTION , es);
else
GetRichEditCtrl().StreamOut(SF_RTF , es);
}
void CMyRichView::SetRichText(CString sString,bool bSelected/* =true */)
{
EDITSTREAM es = {(DWORD)&sString, 0, FromStringToRich};
if(bSelected==true)
GetRichEditCtrl().StreamIn(SF_RTF| SFF_SELECTION , es);
else
GetRichEditCtrl().StreamIn(SF_RTF , es);
}
[/code]
klasa CMyRichView dziedziczy po CRichEditView
no i kawalek naglówka
static DWORD CALLBACK FromStringToRich(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb);
static DWORD CALLBACK FromRichToString(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb);
void GetRichText(CString& sString,bool bSelected=true);
void SetRichText(CString sString,bool bSelected=true);