CRichEditCtrl contents from RTF file
Hi,
I have a Wizard based application, in which I have some property pages. In
one of the pages, I have a CRichEditCtrl, and I try to populate its contents
from a RTF file. The porblem is, it works correctly if the RTF file is small
(about 4-5 KB), but when I use a larger file, its contents either don't
display at all, or gets truncated.
The code is shown below. What can I do to show the entire contents of the
RTF file in the control? Also, it should work for all languages - I have
UNICODE defined in the project. m_RECtrl is the rich edit control.
static DWORD CALLBACK MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG
cb, LONG *pcb)
{
CFile* pFile = (CFile*)(DWORD_PTR)dwCookie;
*pcb = pFile->Read(pbBuff, cb);
return 0;
}
BOOL CREPage::OnInitDialog()
{
CBasePage::OnInitDialog();
if (m_strRTFFilePath.GetLength())
{
m_RECtrl.ShowScrollBar(SB_VERT, TRUE);
CFile eulaFile(m_strRTFFilePath, CFile::modeRead);
EDITSTREAM es;
es.dwCookie = (DWORD_PTR)&eulaFile;
es.pfnCallback = (EDITSTREAMCALLBACK)MyStreamInCallback;
m_RECtrl.StreamIn(SF_RTF, es);
}
return TRUE;
}
int CREPage::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CBasePage::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rect;
GetClientRect(&rect);
rect.bottom -= 25;
m_RECtrl.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE, rect,
this, IDC_RICHEDIT_EULA);
m_RECtrl.SetOptions(ECOOP_OR, ECO_AUTOVSCROLL | ECO_AUTOHSCROLL |
ECO_READONLY);
m_RECtrl.ModifyStyleEx(0, WS_EX_CLIENTEDGE, SWP_FRAMECHANGED);
return 0;
}
TIA,
JY