Beispiel für Asynchrone Calls:
Delphi-Quellcode:
unit Unit1;
interface
uses
..., Messages;
// <- !
const
WM_USER_MYMessage = WM_USER +1;
// <-- !
Delphi-Quellcode:
TMyForm = class(Form)
...
protected
procedure MYMessageProc(var Message: TMessage); message My_USER_MYMessage; // <-- !
end;
procedure TMyForm.MYMessageProc(var Message: TMessage);
begin
//Mache etwas
inherited;
end;
end;
[delphi]
Aufruf aus Thread (aber nicht nur):
Code:
PostMessage(MyForm.HWND, WM_USER_MYMessage, 0, 0); // du kannst auch SendMessage verwenden !
Wen du string übergeben willst dann:
Code:
procedure MySend(AText: string); // call aus dem Thread, oder von wo anders !
var
psText: PString;
begin
New(psText);
psText^ := AText;
PostMessage(MyForm.HWND, WM_USER_MYMessage, Integer(psText), 0); // du kannst auch SendMessage verwenden !
end;
und aus "MYMessageProc" wird:
Code:
procedure TMyForm.MYMessageProc(var Message: TMessage);
var
sText: string;
begin
sText := PString(Message.WParam)^;
Dispose(PString(Message.WParam)); //frei geben
inherited;
//Mache etwas, in sTest ist dein string
end;
ciao
radekj
PS: aus dem Kopf getippt, bug possible