您好,请教 Edit 如何接受消息 ? 谢谢(20分)

  • 主题发起人 主题发起人 wjlsnet
  • 开始时间 开始时间
W

wjlsnet

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
Temp : Array [0..1] of Char ;
begin
temp2[0]:='a';
temp2[1]:='b';
PostMessage(Edit1.Handle ,WM_GETTEXT, 0, longint(@temp2)); 什么消息才能使 edit1.Text := string(Temp2); ?
end ;

谢谢
 
SendMessage(Edit1.Handle,WM_SETTEXT,0,Longint(@Temp);
 
谢谢,不过这样总有个“尾巴“
------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
Temp2 : Array [0..1] of Char ;
i : Integer ;
begin
temp2[0]:='a';
temp2[1]:='b';
SendMessage(Edit1.Handle,WM_SETTEXT,0,Longint(@Temp2));
end ;

//得到 ab@ 而不是 ab ,为什么 ?

还有, SendMessage()把一个消息发给窗口过程,等消息被处理后才返回,
觉得 SendMessage() 应该有一个消息处理过程(而PostMessage主管发送消息可以不需要)但这儿为何可以 ?

望解惑 谢谢
 
procedure TForm1.Button1Click(Sender: TObject);
var
Temp2 : Array [0..2] of Char ;////
s:string;
i : Integer ;
begin
temp2[0]:='a';
temp2[1]:='b';
temp2[2]:=#0;//结束符
s:='ab';
//以下四句效果相同
SendMessage(Edit1.Handle,WM_SETTEXT,0,Longint(@Temp2));
SendMessage(Edit1.Handle,WM_SETTEXT,0,Longint(PChar(s)));
PostMessage(Edit1.Handle,WM_SETTEXT,0,Longint(@Temp2));
PostMessage(Edit1.Handle,WM_SETTEXT,0,Longint(PChar(s)));
end ;

SendMessage在不需要返回值时与PostMessage差不多,但如果目标对象(Handle)
失去响应,SendMessage不会返回,PostMessage马上返回
如果你要用到消息的返回值,如WM_GETTEXT,就只能用SendMessage,目标对象
响应消息后会把返回值写入到参数指向的地址空间内,然后你才能读取数据,
而PostMessage根本不会等待目标对象响应
 
接受答案了.
 

Similar threads

后退
顶部