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

●●●如果用COM传递一个图标?●●●


hicon,如果通过com的方法传递给调用者?  
 

推荐阅读

  • 年度新锐榜:MOTO捧回两项桂冠 [详细内容]
  • IT [详细内容]
  • 499元大气魄 256MB影驰GF5200现身 [详细内容]
  • IT [详细内容]
  • IT [详细内容]
  • 买爱国者数码相机伴侣 送256MB记忆棒 [详细内容]
  • 359没有电的情况下可以使用其他的3*线冲冲电哦 [详细内容]
  • 网友回答:
    网友:masterz

    save   icon   into   istream*,   then   you   can   get   its   size  
      {  
      //   todo:   add   extra   validation   here  
      //createstreamonhglobal  
      //ipicture::save  
      lpbyte   lpbits=null;  
      long   size=0;  
      hicon   hicon=loadicon(afxgetinstancehandle(),makeintresource(idi_icon1));  
      pictdesc   pdiconsrc;  
      pdiconsrc.cbsizeofstruct=sizeof(pictdesc);  
      pdiconsrc.icon.hicon=hicon;  
      pdiconsrc.pictype=pictype_icon;  
      ipicture*   pipicture=null;  
              hresult   hr;  
      idispatch*   pdisp=null;  
              hr   =   olecreatepictureindirect(&pdiconsrc,    
                                                                            iid_idispatch,    
                                                                            true,    
                                                                            (void**)&pdisp);  
      if(succeeded(hr))  
      {  
      hr   =   pdisp->queryinterface(&pipicture);  
      if(succeeded(hr))  
      {  
      lpbits   =   (lpbyte)   globalalloc(gmem_moveable|gmem_nodiscard,   64*1024);  
      istream*   pstream;  
      createstreamonhglobal(lpbits,false,&pstream);  
      hr=pipicture->saveasfile(pstream,false,&size);  
      if(pstream)  
      pstream->release();  
      if(succeeded(hr)&&size>0)  
      {  
      //you   can   use    
      char*   pchar=(char*)lpbits;  
      //icon   is   stored   in   pchar,   length   is   size  
      //to   create   another   hicon  
      //use   oleloadpicture(pstream,...)  
      //ipicture::get_handle   to   get   the   icon   handle  
      }  
      pipicture->release();  
      if(lpbits)  
      globalfree((hglobal)lpbits);  
      }  
      pdisp->release();  
      }  
      }

    .

    讨论区

    Login