IPicture 实际上是 OlePicture 的指针, 在 Delphi 的 AXCtrlx.pas 中优两个
过程专门进行 ActiveX 中的 OlePicture 和 TPicture 的转换工作:procedure GetOlePicture(Picture: TPicture; var OlePicture: IPicture);
procedure SetOlePicture(Picture: TPicture; OlePicture: IPictureDisp);GetOlePicture 将用一个 TPicture 来创建一个 OlePicture
SetOlePicture 将一个 OlePicture 直接转换成 TPicture 对象欲要将做 Automation Server 中的图像传给其他程序, 可以建立一个 Picture
属性, 供其他程序使用:interfacetype
  TMyControlX = class(TActiveXControl, IMyControlX)
  private
    FDelphiControl
    ...
  public
    function Get_Picture: IPictureDisp; safecall;
    procedure Set_Picture(const Value: IPictureDisp); safecall; 
    ...
    property Picture: IPictureDisp read Get_Picture write Set_Picture;
  end;implementationfunction TMyControlX.Get_Picture: IPictureDisp;
begin
  GetOlePicture(FDelphiControl.Picture, Result);
end;procedure TMyControlX.Set_Picture(const Value: IPictureDisp);
begin
  SetOlePicture(FDelphiControl.Picture, Value);
end;

解决方案 »

  1.   

    to forgot :
       总算有人回贴,老兄不错,我会给分给你的。
    不过,我想问题还没有搞清。1.procedure GetOlePicture(Picture: TPicture; var OlePicture:IPicture); 
    procedure SetOlePicture(Picture: TPicture; OlePicture: IPictureDisp);
    你有没有注意到,GetOlePicture中是Ipicture而SetOlePicture中是iPictureDisp。why?应都是IpcitureDisp才对呀!!
    另外,可能我没把意思说清,我要做一个server,一个client.
    通过改变client而改变server.而不是将server中picture传给client.ok.我想程序中应该是关与picture的什么地方出了问题,但我实在找不出,哎,真没办法。另外,我还有一贴,名叫《variant的因惑》,少有人接贴,真伤心,有空也烦老兄帮忙看看,先谢了。要分,发话就可!!!!
      

  2.   

    csdn无高手!!!!!!!!!
    so disappointed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!