Habs mal versucht umzusetzen!
Delphi-Quellcode:
implementation
constructor
var
Magnetic : TMagnetic; // Man sollte für Typdeklaratationen überigens besser "T" verwenden
begin
Magnetic := Magnetic.create;
try
Magnetic.Class_Initialize);
finally
Magnetic.Class_Terminate;
end;
end;
procedure Class_Initialize;
begin
// Default snap width
m_lSnapWidth := 10;
// Initialize array (handled windows info)
ReDim m_uWndInfo(0): WND_INFO;
m_lWndCount := 0;
End;
procedure Class_Terminate;
begin
// Stop subclassing
If (m_lWndCount) Then
Subclass_StopAll;
End;
Magnetic.create gibt aber einen fehler aus!
Fehlt da eine overload function ?
Habe das gefühl das meine umsetzung nicht ganz richtig ist..
Edit:
Magnetic.AddWindow(GetDesktopWindow, Self.handle);
Gut gemeint aber das geht nicht!
Das Projekt ist eine classe welche von außen aufgerufen wird
Der Functionsaufruf wäre dieser!
Magnetic.AddWindow(frmMain.Handle); // Ist die Hauptform deiner Anwendung
Öffnest du nun ein neues Window(Fenster)
Dann kannst du zu deiner Hauptform das ParentWindow dieses Fenster addieren.
Magnetic.AddWindow(frmMain.Handle, frmTest.Handle);
Das ergebnis wäre.
Wird dein Hauptfenster in die nähe des Test Fenster geschoben dann dockt dieses daran an.
Verschiebst du nun das Hauptfenster wird das TestFenster mitgezogen.
Die Position wo es andockt ist egal!
Diese Klasse macht genau das was Winamp macht wenn dort Fenster andocken.
Es können xBeliebige Fenster zur Hauptform addiert werden.
gruß