Es wäre noch anzumerken, dass in anderen Sprachen, wie bspw. C++, die Definition von der Erzeuger-Funktion SkinMagnetic Probleme verursachen kann.
Das heißt, diese Funktion...
Delphi-Quellcode:
function SkinMagnetic : ISkinMagnetic; stdcall;
begin
if MagneticWnd = nil then
MagneticWnd := TMagnetic.Create;
result := MagneticWnd as ISkinMagnetic;
end;
...besser umändern zu:
Delphi-Quellcode:
function SkinMagnetic(
out ASkinMagnetic: ISkinMagnetic): HRESULT;
stdcall;
begin
Result := S_FALSE;
try
if MagneticWnd =
nil then
MagneticWnd := TMagnetic.Create;
ASkinMagnetic := MagneticWnd
as ISkinMagnetic;
if Assigned(ASkinMagnetic)
then
begin
Result := S_OK;
end;
except
on E:
Exception do
Result := E_NOINTERFACE;
end;
end;