MdAggregate.pas
Upload User: fh681027
Upload Date: 2022-07-23
Package Size: 1959k
Code Size: 1k
Category:

Delphi VCL

Development Platform:

Delphi

  1. unit MdAggregate;
  2. interface
  3. type
  4.   TMdAggregatedObject = class
  5.   private
  6.     FController: Pointer;
  7.     function GetController: IInterface;
  8.   protected
  9.     { IInterface }
  10.     function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
  11.     function _AddRef: Integer; stdcall;
  12.     function _Release: Integer; stdcall;
  13.   public
  14.     constructor Create(Controller: IInterface);
  15.     property Controller: IInterface read GetController;
  16.   end;
  17. implementation
  18. function TMdAggregatedObject._AddRef: Integer;
  19. begin
  20.   Result := IInterface(FController)._AddRef;
  21. end;
  22. function TMdAggregatedObject._Release: Integer;
  23. begin
  24.   Result := IInterface(FController)._Release;
  25. end;
  26. constructor TMdAggregatedObject.Create(Controller: IInterface);
  27. begin
  28.   FController := Pointer(Controller);
  29. end;
  30. function TMdAggregatedObject.GetController: IInterface;
  31. begin
  32.   Result := IInterface(FController);
  33. end;
  34. function TMdAggregatedObject.QueryInterface(const IID: TGUID;
  35.   out Obj): HResult;
  36. begin
  37.   Result := IUnknown(FController).QueryInterface(IID, Obj);
  38. end;
  39. end.
  40.