COM 接口得到實現該接口的對象實例

參見http://www.wangchao.net.cn/bbsdetail_47176.html

 

外部調用Vote1.Base :=Base1.DefaultInterface;

 

Base屬性設置爲Read|Write|Write byref, Type 爲Base*。

 

procedure TVote.Set_Base(const Value: Base);
var
   eEntry: PInterfaceEntry;
   eAutoObjFactory: TAutoObjectFactory;
begin
  FBase := Value;

  //得到類工廠
eAutoObjFactory:= TAutoObjectFactory(ComClassManager.GetFactoryFromClassID(CLASS_Base));
//得到接口標識的接口項
eEntry:= eAutoObjFactory.DispIntfEntry;
//IOffset爲接口的偏移地址,eResource減去IOffset所得到的地址就是對象實例
FTBase:= TBase(Integer(FBase)-eEntry.IOffset);

 

  if FTBase <>nil then
    FTBase.OnTimerOK :=eveTimeOK

  else
    FTBase.OnTimerOK := nil;
end;

 

發佈了45 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章