Warum sollte das auch nicht gehen?
Delphi-Quellcode:
IWmpEffects = interface( IUnknown )
...
end;
IWmpEffects2 = interface( IWmpEffects )
...
end;
var
ObjInstance : IUnknown;
_IWmpEffects : IWmpEffects;
_IWmpEffects2 : IWmpEffects2;
// Wenn die Referenz in _IWmpEffects das Interface IID_IWMPEffects2 unterstützt
// dann stelle eine Interface-Referenz in _IWmpEffects2, ansonsten NIL
Supports( _IWmpEffects, IID_IWMPEffects2, _IWmpEffects2 );
// Wenn die Referenz in _IWmpEffects das Interface IID_IWMPEffects2 unterstützt
// dann stelle eine Interface-Referenz in ObjInstance, ansonsten NIL
Supports( _IWmpEffects, IID_IWMPEffects2, ObjInstance );
// Wenn die Referenz in _IWmpEffects das Interface IID_IWMPEffects unterstützt
// dann stelle eine Interface-Referenz in ObjInstance, ansonsten NIL
Supports( _IWmpEffects, IID_IWMPEffects, ObjInstance );
es geht ja auch das einfach so
Delphi-Quellcode:
ObjInstance := _IWmpEffects;
// oder
ObjInstance := _IWmpEffects2;
Fraglich ist ja nur, welchen Sinn
Supports( _IWmpEffects, IID_IWMPEffects2, ObjInstance );
haben kann. Mit
ObjInstance
habe ich ja nur die Möglichkeit auf
IUnknown
zuzugreifen und müsste schon wieder mit
Supports
prüfen/casten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)