C++ CRichEditCtrl::StreamIn不';我无法读取整个文本文件
我有一个文本文件,我想读,然后把它放在一个丰富的编辑框。问题是,C++ CRichEditCtrl::StreamIn不';我无法读取整个文本文件,c++,mfc,cricheditctrl,C++,Mfc,Cricheditctrl,我有一个文本文件,我想读,然后把它放在一个丰富的编辑框。问题是,pbBuff缓冲区获取整个文件,但是只有第一行被添加到CRichEditCtrl小部件中 以下是回调函数: static DWORD CALLBACK StreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG FAR *pcb) { CFile* dat = (CFile*) dwCookie; *pcb = dat->Read(pbBu
pbBuff
缓冲区获取整个文件,但是只有第一行被添加到CRichEditCtrl小部件中
以下是回调函数:
static DWORD CALLBACK StreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG FAR *pcb)
{
CFile* dat = (CFile*) dwCookie;
*pcb = dat->Read(pbBuff, cb);
return 0;
}
CFile dat(_T("readme.txt"), CFile::modeRead);
EDITSTREAM es;
es.dwCookie = (DWORD)&dat;
es.pfnCallback = StreamInCallback;
m_RichEditBesedilo.StreamIn(SF_TEXT, es);
以及如何在OnInitDialog()函数中设置它:
static DWORD CALLBACK StreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG FAR *pcb)
{
CFile* dat = (CFile*) dwCookie;
*pcb = dat->Read(pbBuff, cb);
return 0;
}
CFile dat(_T("readme.txt"), CFile::modeRead);
EDITSTREAM es;
es.dwCookie = (DWORD)&dat;
es.pfnCallback = StreamInCallback;
m_RichEditBesedilo.StreamIn(SF_TEXT, es);
如果调试显示pbBuff被整个文件填满,则StreamIn正在工作,您的问题就在别处。通过其他方式插入文本时,请确保CRICHEDITCRL正确显示多行文本。如果不是,可能是因为控制RichEdit的标志或缺少RichEdit正常工作所需的初始化。您尚未使用ES_多行样式集创建控件-默认情况下,rich edit控件仅显示一行,没有此样式。谢谢,这解决了此问题。你可以这样回答,我会接受的。