Postmessage与SendMessage的折腾
如果要是问起PostMessage与SendMessage之间的区别,我肯定回答得头头是道。Postmessage只是投递消息,不会管你收 不收到以及怎么处理,投递以后直接返回;而SendMessage必需等消息处理后才返回。两者的区别可以形象比喻成寄信,PostMessage是寄的 平信,不会管有没有收到,只管寄就是了。而SendMessage寄的EMS,对方签收后才会完成投递。
道理是没错了,等你去用的时候,却发现自己将这个简单的道理给忘了。比如以下代码:
ASM代码
- invoke SendMessage,dateCtrl,DTM_GETSYSTEMTIME, NULL, offset g_targetDateTime
是取一个时间控件中的日期,用g_targetDateTime保存返回。这是正确的,而我开始是用PostMessage去取的,整了半天都没有数据过来,以为其他地方出问题。查了半天,原来是SendMessage与PostMessage造成的。郁闷!