sendmessage和postmessage的区别

来源:百度知道 编辑:UC知道 时间:2024/06/30 04:40:17
sendmessage和postmessage的区别

具体的参数情况就不为搂住列举了,相信楼主已经查过msdn.
说说区别
PostMessage只负责将消息放到消息队列中,不确定何时及是否处理
SendMessage要等到受到消息处理的返回码(DWord类型)后才继续
PostMessage执行后马上返回
SendMessage必须等到消息被处理后才会返回。

SendMessage把消息放入消息队列,并要等待消息处理完才返回。
PostMessage可以理解为把消息扔进消息队列里,不管有没有处理就返回!

SendMessage发送消息后会等对方处理完这个消息后才会继续
PostMessage则将消息发送出去后就会继续

所以注意,不要通过PostMessage传递临时变量指针,应该很可能消息被处理时该变量已经销毁,这时访问就会出错

用SendMessage就可以了,因为程序会停在SendMessage函数,直接消息被处理

SendMessage,PostMessage:
前者同步,后者异步
其他没有区别。

1、首先是返回值意义的区别,我们先看一下 MSDN 里的声明:

LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
BOOL PostMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

其中 4 个参数的意义是一样的,返回值类型不同(其实从数据上看他们一样是一个 32 位的数,只是意义不一样),LRESULT 表示的是消息被处理后的返回值,BOOL 表示的是消息是不是 Post 成功。

2、PostMessage 是异步的,