Ver Mensaje Individual
  #3  
Antiguo 31-01-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 14
aguml Va por buen camino
Sigo investigando como conseguirlo y he llegado a esto:
Código PHP:
unsigned int DataHandle;
HPALETTE APalette;
unsigned short MyFormat;
TPicture *pic;
IPictureDisp **pIPD;

//Obtengo el puntero al IPictureDisp
pIPD AddFlow1->ExportPicture(afAllItemstruetrue);

try
{
   
pic = new TPicture//Solicito memoria para el TPicture
   
__try
   
{
      try
      {
         
SetOlePicture(pic, *pIPD); //Paso la imagen del IPictureDisp al TPicture

         //Envio la imagen al portapapeles
         
pic->SaveToClipboardFormat(MyFormat,DataHandle,APalette);
         
Clipboard()->SetAsHandle(MyFormat,DataHandle);
      }catch(...){
         
ShowMessage("Fallo al copiar la imagen al portapapeles.");
      }
   }
__finally{
      
delete pic//Libero la memoria del TPicture
   
}
}catch(...){
   
ShowMessage("No hay memoria suficiente.");

Cuando llego aquí da una excepcion:
Código PHP:
SetOlePicture(pic, *pIPD); 
Si entro con F7 veo esto:
Código PHP:
__fastcall DelphiInterface<T>(Trhs)
{
   if (
rhs != 0)
     
rhs->AddRef();
   
intf rhs;

Si voy linea a linea veo que al intentar ejecutar rhs->AddRef(); ese metodo no existe para ese objeto.
He mirado con OleViewer y no veo el interface IPictureDisp por ningun sitio pero si veo IPicture ¿como puede ser que no aparezca entre las interfaces y builder lo reconozca? ¿que puedo estar haciendo mal para que no funcione mi codigo?
Responder Con Cita