作者:朱金灿
来源:http://blog.csdn.net/clever101/
最近看《Win 32多线程程序设计》,书中提到了PostMessage和SendMessage的区别。PostMessage是一个异步行为,就是先把消息扔到对方的消息队列,然后沿着原调用点继续执行;SendMessage是一个同步行为,就是等待对方把这个消息处理完再回到调用点继续执行。
我想怎么测试这个结论呢?为此我设计了一个小试验:在视图中弹出一个非模式的帮助对话框,然后分别用PostMessage和SendMessage给这个对话框发消息,消息处理函数很简单,就是在视图上打印字符串。
试验结果是使用SendMessage给对话框发送消息,先是依次输出5个"字符串来自对话框窗口",再依次输出5个"字符串来自视图窗口"。而使用PostMessage给对话框发送消息,结果相反,先依次输出5个"字符串来自视图窗口",再依次输出5个"字符串来自对话框窗口"。