Warum funktioniert das nicht bzw. wie geht es richtig.
rc := lP;
es funktioniert nur wenn ich den Speicher vorher kopiere.
CopyMemory(@rc, Pointer(lP), sizeof(rc));
oder ist das so korrekt?
Delphi-Quellcode:
WM_MOVING:
begin
Monitor := MonitorFromWindow(WinHandle, MONITOR_DEFAULTTONEAREST);
CopyMemory(@rc, Pointer(lP), sizeof(rc));
if (rc.Top < 0) then
rc.Top := 0;
rc.Right := rc.Left + pMM^.ptMinTrackSize.X;
rc.Bottom := rc.Top + pMM^.ptMinTrackSize.Y;
tmi.cbSize := sizeof(tmi);
if (GetMonitorInfo(Monitor, @tmi)) then
begin
if (rc.Bottom > tmi.rcWork.Bottom) then
begin
rc.Bottom := tmi.rcWork.Bottom;
rc.Top := rc.Bottom - pMM^.ptMinTrackSize.Y;
end;
end;
Result := 1;
Exit;
end;
Die Daten kommen richtig an.
Aber eigentlich wollte ich LParam direkt an TRect (rc) übergeben.
gruss