Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#3

Re: Eigene Nachricht mit Parameterübergabe

  Alt 29. Jun 2007, 15:44
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.
  Mit Zitat antworten Zitat