我是想让file.rtf文件中的数据显示在m_chatLog中,m_chatLog为CRichEditCtrl类型的一个控件关连的变量,但是我发现执行完后什么也没显示出来,这是为什么啊。file.rtf的内容是我用该控件的StreamOut写入的,而且我发现写出时的cb为4095,而读出的cb为4092,这3字节是怎么回事啊,这段代码我是在msdn中拷过来的,这是为什么啊。static DWORD CALLBACK StreamIntoCtrl(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CFile* pFile = (CFile*) dwCookie;
*pcb= pFile->Read(pbBuff, cb);
return 0;
}
void CChatManageDlg::OnSendBtn() 
{
CFile cFile(TEXT("file.rtf"), CFile::modeRead);
EDITSTREAM es;
es.dwCookie = (DWORD) &cFile;
es.pfnCallback = StreamIntoCtrl;
m_chatLog.StreamIn(SF_RTF, es);
}符加一个问题,如果显示出来后;怎样让它不复盖以前的数据,而是追加到以前的数据的后面

解决方案 »

  1.   

    DWORD   CALLBACK   EditStreamCallback   (DWORD   dwCookie,   LPBYTE   pbBuff,   LONG   cb,   LONG   FAR   *pcb)   
    {   
    ReadFile((HANDLE)   dwCookie,   pbBuff,   cb,   (LPDWORD)   pcb,   NULL);   
    return   0;   //   file   has   been   fully   read   in   
    }  
    outfile.Open("Notice.rtf", CFile::modeRead);
    m_RichEdit.SetReadOnly(TRUE);
    EDITSTREAM eStream;
    eStream.dwCookie = outfile;   
    eStream.pfnCallback = EditStreamCallback;   
    eStream.dwError = 0;  
    m_RichEdit.StreamIn(SF_RTF, eStream);
      

  2.   

    eStream.dwCookie = outfile;   
    这句不一样。  运行程序时rtf文件不能打开着。
      

  3.   

    我稿好了,原来是因为那个ole控件设为指针了