当前位置:首页 » 多媒体相关

为什么在有的计算机上往RichEdit插入BMP图片出问题?


插入图片的函数如下,在大多数机器上正常,但在少数机器上出现这样的问题:insertobject   后插入了空白框,看不到bmp图片,哪位知道如何解决?  
  从网上下载的vc的例子也是出现同样的问题。  
   
   
  bool   insertbitmap(trichedit   *editor,   string   bmpfile   )  
  {  
    iricheditole   *frtf;  
    ioleobject   *fole;  
    tformatetc   formatetc;  
    istorage   *fstorage;  
   
    ioleclientsite     *fclientsite;  
    ilockbytes   *flockbytes;  
    reobject   reobject;  
   
    clsid   xt;  
   
    if(!fileexists(bmpfile))  
        return(false);  
    try   {  
        sendmessage(editor->handle,   em_getoleinterface,   0,   int(&frtf));  
        if(frtf==null)  
            return(false);  
        if(createilockbytesonhglobal(0,true,&flockbytes)!=s_ok)  
            return(false);  
        if(stgcreatedocfileonilockbytes(flockbytes,stgm_share_exclusive   |   stgm_create   |   stgm_readwrite,0,&fstorage)!=s_ok)  
            return(false);  
        formatetc.cfformat=0;  
        formatetc.ptd=null;  
        formatetc.dwaspect=dvaspect_content;  
        formatetc.lindex=-1;  
        formatetc.tymed=tymed_null;  
   
        frtf->getclientsite(&fclientsite);  
      if(olecreatefromfile(guid_null,pwidechar(widestring(bmpfile)),::iid_iunknown,  
                      0,&formatetc,null,fstorage,&((void*)fole))!=s_ok)  
            return(false);  
        iunknown   *ftemp;  
        ftemp=fole;  
        ftemp->queryinterface(::iid_ioleobject,   &((void*)fole));  
        olesetcontainedobject(fole,   true);  
        zeromemory(&reobject,   sizeof(reobject));  
        reobject.cbstruct=sizeof(reobject);  
        fole->getuserclassid(&xt);  
        reobject.clsid=xt;  
        reobject.cp=(unsigned   long)reo_cp_selection;  
        reobject.dvaspect=dvaspect_content;  
        reobject.dwflags=reo_static   |   reo_belowbaseline;  
      reobject.dwuser=0;  
        reobject.poleobj=fole;  
        reobject.polesite=fclientsite;  
        reobject.pstg=fstorage;  
        reobject.sizel.cx=0;  
        reobject.sizel.cy=0;  
        frtf->insertobject(&reobject);  
    }  
    catch(...)  
    {  
        frtf=null;  
        fole=null;  
    }  
      return(true);  
  }  
 

推荐阅读

  • 奥美佳1MB=1元!256MB闪盘 256元促销 [详细内容]
  • 瘦身智能手机Sendo X真机多图赏 [详细内容]
  • 松下X400狂降700 松下X88降价送礼 [详细内容]
  • 超值 友基UG688ER 256M只要688元 [详细内容]
  • 关于NG进入电话本慢的问题 [详细内容]
  • 11月17日全国各地降价手机大集合 [详细内容]
  • 炫音VX505低价抢滩 256MB只要899 [详细内容]
  • 网友回答:
    网友:keiy

    我的机上就不能插入(函数返回true),我怀疑是少装某些软件所至.

    网友:bcb

    看不懂呀,关注

    网友:jmylf

    估计是richedit版本的问题,有的是2的有的是1的不过没有试过

    网友:keiy

    不可能richedit的版本问题,我在98及2k下用的是同一程序,可能是2k的权限问题

    网友:aweay

    我在98、2000、xp都测试过了,没有问题

    网友:keiy

    我的2k  
          richedit1->lines->loadfromfile("aaa.rtf");  
      都无法显示图片,可能是某个系统dll有问题

    网友:ddsft

    to:yangbin   (yangbing)    
       
          把你的源码全部贴出一下!

    网友:zjqyb

    改成richedit2.0的话不用ole这么麻烦  
      直接pastefromclipboard就行

    网友:ddsft

    to:zjqyb()    
            关于在cb6中如何使用richedit2.0插入图形!也发一份我吧!cjd@softwww.com   谢谢了!

    网友:bcb

    bcb6用的是richedit2.0?

    .

    讨论区

    Login