《delphi5开发人员指南》里的一段话,不理解,请指教(10分)

  • 主题发起人 主题发起人 coolingxyz
  • 开始时间 开始时间
C

coolingxyz

Unregistered / Unconfirmed
GUEST, unregistred user!
《delphi5开发人员指南》11.2.4
里面有这么一段话:
可以利用在线程之间使用消息同步以替代TThread.Synchronize()方法。可以使用A P I函数SendMessage()或PostMessage()来发送消息。例如,下面是一段用来在一个线程中设置另一个线程中的编辑框文本的代码:
Var
s : String;
begin
s := 'Hello from threadland';
sendmessage(SomeEdit.Handle,WM_SETTEXT,0,Integer(PChar(s)));
end;

我想知道的是:SomeEdit怎么知道这个消息是让它添加一条记录呢?
WM_SETTEXT是系统定义的消息吗?
 
Integer(PChar(s))
这个又是怎么回事呢?
我自己写了一个:
//线程里:
const WM_FIND = WM_USER + 418;
然后:
s := 'hello';
SendMessage(FrmFh.Handle, WM_FIND, 0, Integer(PChar(s)));
//主程序里:
const WM_FIND = WM_USER + 418;
procedure TFrmFh.WMFind(var Msg: TMessage);
begin
// 已经能触发这个消息了,但不知道怎么取出 s := 'hello';
end;
 


让一个tmemo控件添加一条记录的消息是哪个?谢谢
 
试试
procedure TFrmFh.WMFind(var Msg: TMessage);
var
Ps:Pchar;
begin
Ps:= Pchar(msg.LPARAM);
application.messagebox('test',Ps,mb_ok);
end;
 
Edit是Windows基本窗口之一,它处理了WM_SETTEXT消息。
一般的窗口也是一样,只不过它们处理WM_SETTEXT消息的结果是设置标题栏文字。
 
多人接受答案了。
 
后退
顶部