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控件仅显示一行,没有此样式。谢谢,这解决了此问题。你可以这样回答,我会接受的。