Delphi-Quellcode:
ISkinMagnetic =
interface
['
{A00CB8B3-8433-4C58-9115-1845B29B3FF0}']
function GetSnapWidth: Integer;
procedure SetSnapWidth(
const Value: Integer);
property SnapWidth: Integer
read GetSnapWidth
write SetSnapWidth;
function AddMagneticWindow(
Handle: HWND; hWndParent: HWND): Boolean;
function RemoveMagneticWindow(
Handle: HWND): Boolean;
function SetFullWindowDrag(HWND: DWORD; ShowFullWindow: Boolean): Boolean;
end;
Interne
Unit:
Delphi-Quellcode:
ISkinMagneticEx =
interface(ISkinMagnetic)
['
{14454F11-1C26-4133-A46E-3271F5A9618B}']
function zSubclass_Proc(
var Wnd: HWND;
var Msg: UINT;
var wParam: wParam;
var lParam: lParam): LRESULT;
end;
// (die Klasse wäre bei uns lediglich in einer eigenen Unit)
TMagnetic =
class(TInterfacedPersistent, ISkinMagnetic, ISkinMagneticEx)
...
Wieso bindest du an dieser Stelle beide Interfaces ein? Würde es nicht reichen nur
ISkinMagneticEx
einzubinden? Das Interface ist doch von
ISkinMagnetic
abgeleitet und kennt somit alle Funktionen? Wo liegt hier der Vorteil bzw. wieso sollte man das so machen?
Wollte auch demnächst mit
DLL Programmierung anfangen, bin da aber noch nicht so ganz firm drin. Interfaces funktionieren so einigermaßen mittlerweile.