Du musst einen eigenen Record definieren, daraus einen Pointer machen, Speicher reservieren und als LParam die Adresse des Pointers übergeben.
Hier mal ein Beispiel aus einem aktuellen Projekt:
Delphi-Quellcode:
type
TOscDrawInfo = record
Buffer: PChar;
Size: Integer;
OscRight, OscLeft: TBitmap;
LW, LH, RW, RH: Integer;
ScannerOsc: Boolean
end;
POscDrawInfo = ^TOscDrawInfo;
{...}
procedure DrawOscilloscope (Buffer: PChar; Size: Integer;
OscRight, OscLeft: TBitmap;
LW, LH, RW, RH: Integer;
ScannerOsc: Boolean);
var
OscDrawInfo: POscDrawInfo;
begin
New (OscDrawInfo);
GetMem (OscDrawInfo^.Buffer, Size);
CopyMemory (OscDrawInfo^.Buffer, Buffer, Size);
OscDrawInfo^.Size := Size;
OscDrawInfo^.OscRight := OscRight;
OscDrawInfo^.OscLeft := OscLeft;
OscDrawInfo^.LW := LW;
OscDrawInfo^.LH := LH;
OscDrawInfo^.RW := RW;
OscDrawInfo^.RH := RH;
OscDrawInfo^.ScannerOsc := ScannerOsc;
PostMessage (RadionicMainContainerForm.Handle,
WM_USER, MSG_DRAW_OSCILLOSCOPE, Integer (OscDrawInfo));
end;
Nicht vergessen, den Speicher dann in der Empfangsroutine wieder freizugeben.