a mon avis, il va falloir que tu implementes IUnknown (c-a-d QueryInterface, _AddRef et _Release ) a la main...
essaye de te faire une classe TUnknownForm (par exemple)
TUnknownForm = class (TForm, IUnknown)
qui aura les 3 memes methodes que IUnknown, a savoir:
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
pour le code QueryInterface, utilise la fonction GetInterface:
if GetInterface(IID, Obj) then
Result := 0
else
Result := E_NOINTERFACE;
pour le code de _AddRef et _Release, incremente et decremente un compteur que tu gereras en interne:
Inc(fRefCount);
Result := fRefCount;
Dec(fRefCount);
Result := fRefCount;
if fRefCount = 0 then Destroy;
par contre, le gros inconvenient, c'est que je ne l'ai pas teste donc si ca se trouve, ca ne marche pas !!
ps: sinon, si tu as le code source de la VCL (a partir de l'edition entreprise de delphi, je crois) regarde le source du TInterfacedObject, ca devrait t'aider !
---------------
www.alliancefrancophone.org ... Home is where the heart is