我用sendmessage发送消息正常,用postmessage就出错,请问我用postmessage要注意什么?(50分)

  • 主题发起人 主题发起人 iedelphi
  • 开始时间 开始时间
sendmessage與postmessage有區別:
The SendMessage function sends the specified message to
a window or windows. The function calls the window procedure
for the specified window and does not return until the window
procedure has processed the message.
The PostMessage function,in contrast, posts a message to
a thread's message queue and returns immediately.
 
sendmessage是把消息直接发到指定的窗口,并且等带处理完这条消息后才返回,
而postmessage是把消息发到窗口所在应用程序的消息队列中,并且立即返回。

有些消息只能使用SENDERMESSAGE,而不能使用POSTMESSAGE,这些都会在MSDN里说明的。
 
sendmessage是把消息直接发到指定的窗口,并且等带处理完这条消息后才返回,
而postmessage是把消息发到窗口所在应用程序的消息队列中,并且立即返回。

有些消息只能使用SENDERMESSAGE,而不能使用POSTMESSAGE,这些都会在MSDN里说明的。
 
感谢你们的回答,我看了帮助,发现有这么一段话:
If you send a message in the range below WM_USER to the asynchronous message
functions (PostMessage, SendNotifyMessage, and SendMessageCallback),
make sure that the message parameters do not include pointers.
Otherwise, the functions will return before the receiving thread
has had a chance to process the message and
the sender will free the memory before it is used.
我想可能是我发送时带的参数的问题。
如果我要带一个字符串的参数,我要如何写,能否给我可简单的例子,谢谢!
 
使用自定义消息

const your_message=WM_USER+10
........
begin
......................
end;

 
to jrq:
thank, 我想带一个参数,如name = 'aaa';
但是我不能用指针,必须用字符串,我要在postmessage中如何写呢
 
用integer(pchar('aaa'))做參數。
 
提问之前为什么不搜索一下呢?50分提问别的问题多好啊。
以前有很多帖子都讨论过这个问题,下面是我帮你找到的几个不错的帖子,足以让你明明白白了!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=122145
http://www.delphibbs.com/delphibbs/dispq.asp?lid=431084
http://www.delphibbs.com/delphibbs/dispq.asp?lid=547734
http://www.delphibbs.com/delphibbs/dispq.asp?lid=160172
http://www.delphibbs.com/delphibbs/dispq.asp?lid=520264
 
后退
顶部