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(afAllItems, true, true);
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>(T* rhs)
{
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?