本文實例講述了VC中SendMessage和PostMessage的區別。分享給大家供大家參考。具體分析如下:
1、首先是返回值意義的區別,我們先看一下 MSDN 里的聲明:
PostMessage 只把消息放入隊列,不管消息是否被處理就返回,消息可能不被處理;而 SendMessage 等待消息被處理完了之后才返回,如果消息不被處理,發送消息的線程將一直被阻塞。
3、sendmessage發送消息不經過消息隊列,會被直接處理。但是sendmessage一直等待,知道消息被處理才返回。
4、系統只整理和編號系統消息(0 到 WM_USER 之間的消息),發送用戶消息(WM_USER 以上)到別的進程時,需要自己定義。
用 PostMessage、SendNotifyMessage、SendMessageCallback 等異步函數發送系統消息時,參數里不可以使用指針,因為發送者并不等待消息的處理就返回,接受者還沒處理指針就已經被釋放了。
5、在 Windows 2000/XP 里,每個消息隊列最多只能存放 10,000 個 Post 的消息,超過的還沒被處理的將不會被處理,直接丟掉。這個值可以改得更大:[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows] USERPostMessageLimit,最小可以是 4000。
希望本文所述對大家的VC程序設計有所幫助。
|
新聞熱點
疑難解答
圖片精選