问题1:在写程序中,什么时候用消息投递什么时候用函数呢?经常是两者都可以实现功能,那用哪种更优呢?
问题2:PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。
不太理解,能不能具体举个例子什么时候用post什么时候用send呢?
例如:做一个串口接收数据并显示的程序,串口在不停的接收数据,当串口收到数据后,通过回调函数返回,然后在回调函数中SendMessage(pWnd->m_hWnd,WM_NEW_DATA_ARRIVE,(WPARAM)pRecvBuf,LPARAM(length)); 这时应该用send还是post?
在WM_NEW_DATA_ARRIVE消息处理函数中,需要对收到的数据进行处理,应该用DecodeData(data,length); 函数,还是PostMessage(WM_DECODE_DATA,(WPARAM)data,LPARAM(length));消息处理?
------解决方案--------------------
------解决方案--------------------
PostMessage和SendMessage都是发送消息的函数,两者的不同就是,前者把消息放在Windows的消息队列中就不管了,而SendMessage还要等待其执行返回。就使用而言,大多数情况下两者可以互换使用,但对于一些特殊情况而言,就不同了,比如,你需要第一时间得到返回消息,那么就的使用SendMessage,或者你只是发送一个消息,而不希望程序去“空等”执行返回,那就使用PostMessage。在一般情况下,等待与不等待所耗费的时间很短,完全可以忽略不计。
------解决方案--------------------