Ich möchte eine procedure Safecall überschreiben so das ich das ergebnis zurückgeliefert bekomme.
Delphi-Quellcode:
IWMPEffects2 = interface(IWMPEffects)
['{695386EC-AA3C-4618-A5E1-DD9A8B987632}']
....
procedure Destroy; safecall;
...
Das Plugin behandelt es so..
Delphi-Quellcode:
procedure TVisualization.IWMPEffects2_Destroy;
begin
FhwndParent := 0;
end;
Laut MS..
Zitat:
C++
HRESULT Destroy();
Parameters
This method has no parameters.
Return value
This method returns an HRESULT.
Remarks
This method is used only by windowed visualizations. Windowless visualizations should simply return S_OK.
Daher bin ich was durcheinander da einmal procedure und andererseits laut MS function ?
Wie das Interface casten damit es richtig verarbeitet wird?
Ich würde es ja so schreiben.
Delphi-Quellcode:
function Destroy(): Bool;
begin
result := false;
if Assigned(_IWmpEffects2) then
if _IWmpEffects2.Destroy = S_OK then
result := true
end;
Nur eine procedure erlaubt ja bekanntlich keinen Result Type.
Zur zeit sieht es so aus..
Delphi-Quellcode:
function DestroyInterface: Bool;
begin
Result := False;
// ist ein Visualisierungs-Objekt vorhanden
if Assigned(BassWMPVis1.WmpVis) then
begin
// dann freigeben
if Assigned(_IWmpEffects2) then
_IWmpEffects2 := nil;
if Assigned(_IWmpEffects) then
_IWmpEffects := nil;
BassWMPVis1.WmpVis := nil;
Result := True;
end;
end;
Aber dann weiss ich nicht ob das Plugin sich zu dieser zeit
richtig beendet hat.
gruss