我在RichEdit中插入一张图片,然后调用下面的代码
CComPtr<IRichEditOle> pRichEditOle;
SendMessage(m_hWnd/*RichEidt窗口句柄*/, EM_GETOLEINTERFACE, 0, (LPARAM)&pRichEditOle);
CComPtr<ITextRange> pRichRange;
CComQIPtr<ITextDocument>(pRichEditOle)->Range(0, 0, &pRichRange);
if (NULL == pRichRange)
   return E_FAIL;
pRichRange->Endof(tomStory, 1, NULL);
CComBSTR bstrText;
pRichRange->GetText(bstrText);我插入一张图片,但调用GetText也有内容返回,输出内容来看时是下面的值
"?\r\n"或者是"?\n",我的问题是怎么可以判断RichEdit窗口那里有没有文字存在,因为我只插入一张
图片到RichEdit控件中,我希望调用GetText应该没有文字返回.

解决方案 »

  1.   

    在RichEdit里面文字和图像信息都转换为rtf文本了,但是图像信息有头和为标识,所以你要自己过滤GetText
      

  2.   

    To fujianlin2011
    谢谢你的回答。我在测试中发现,当我插入一张图片到RichEdit中,RichEdit好像会在图片数据后面多添加了数据,测试中,我发现好像是"?\r\n"或者是"?\n",我想请问一下RichEidt有没有判断存不存在文字的函数?你上面说过要过滤GetText函数,但我都没有输入文字到RichEdit,这么过滤?
      

  3.   

    你自己写一个方法,图像是被{}包含了,过滤这段信息就行了,你可以先熟悉一下rtf文档的格式,然后自己实现这个方法就行了
      

  4.   

    To fujianlin2011
    谢谢你的回答。你的意思是获取所有的rtf中的内容,然后根据rtf中的文档格式来分析里面的内容。好的,我试试你这种方法,看能不能实现。谢谢了。
      

  5.   

    TO fujianlin2011
    请问一下,我现在的程序是通过GetText来获取文字信息的,按你上面的回答,我应该是获取所有的信息,那请问一下,我可以通过什么途径获取到那些数据了?谢谢了。
      

  6.   

    // My callback procedure that writes the rich edit control contents
    // to a file.
    static DWORD CALLBACK 
    MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
    {
       CFile* pFile = (CFile*) dwCookie;   pFile->Write(pbBuff, cb);
       *pcb = cb;   return 0;
    }// The example code.// The file to store the contents of the rich edit control.
    CFile cFile(TEXT("My_RichEdit_OutFile.rtf"), 
       CFile::modeCreate|CFile::modeWrite);
    EDITSTREAM es;es.dwCookie = (DWORD) &cFile;
    es.pfnCallback = MyStreamOutCallback; 
    m_myRichEditCtrl.StreamOut(SF_RTF, es);
    来自msdn,仅供参考,查找CRichEditCtrl就可以找到