不同线程之间发送字符串主要是通过copydata方法。
子线程发送:
var
cdds : TCopyDataStruct;
begin
cdds.dwData := 0;
cdds.cbData := Length(s) + 1;
GetMem (cdds.lpData, cdds.cbData ); //为传递的数据区分配内存
StrCopy (cdds.lpData, PChar (s));
SendMessage( TForm( FAOwner ).Handle , WM_COPYDATA , 0 , Cardinal( @cdds ) );
end;
主线程接受消息,函数定义如下:
procedure ShowNewForm( var Msg : TMessage ); message WM_COPYDATA;
函数实现:
var
cdds : TcopyDataStruct;
begin
cdds := PcopyDataStruct( Msg.LParam )^;
sData := ( Pchar( cdds.lpData ) );
end;