VC中SendMessage和PostMessage的區(qū)別
本文實例講述了VC中SendMessage和PostMessage的區(qū)別。分享給大家供大家參考。具體分析如下:
1、首先是返回值意義的區(qū)別,我們先看一下 MSDN 里的聲明:
UINT Msg,
WPARAM wParam,
LPARAM lParam );
UINT Msg,
WPARAM wParam,
LPARAM lParam);
其中 4 個參數(shù)的意義是一樣的,返回值類型不同(其實從數(shù)據(jù)上看他們一樣是一個 32 位的數(shù),只是意義不一樣),LRESULT 表示的是消息被處理后的返回值,BOOL 表示的是消息是不是 Post 成功。
2、PostMessage 是異步的,SendMessage 是同步的。
PostMessage 只把消息放入隊列,不管消息是否被處理就返回,消息可能不被處理;而 SendMessage 等待消息被處理完了之后才返回,如果消息不被處理,發(fā)送消息的線程將一直被阻塞。
3、sendmessage發(fā)送消息不經(jīng)過消息隊列,會被直接處理。但是sendmessage一直等待,知道消息被處理才返回。
4、系統(tǒng)只整理和編號系統(tǒng)消息(0 到 WM_USER 之間的消息),發(fā)送用戶消息(WM_USER 以上)到別的進程時,需要自己定義。
用 PostMessage、SendNotifyMessage、SendMessageCallback 等異步函數(shù)發(fā)送系統(tǒng)消息時,參數(shù)里不可以使用指針,因為發(fā)送者并不等待消息的處理就返回,接受者還沒處理指針就已經(jīng)被釋放了。
5、在 Windows 2000/XP 里,每個消息隊列最多只能存放 10,000 個 Post 的消息,超過的還沒被處理的將不會被處理,直接丟掉。這個值可以改得更大:[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows] USERPostMessageLimit,最小可以是 4000。
希望本文所述對大家的VC程序設(shè)計有所幫助。
- JQuery Ajax 跨域訪問的解決方案
- 在Ajax中使用Flash實現(xiàn)跨域數(shù)據(jù)讀取的實現(xiàn)方法
- 跨域請求之jQuery的ajax jsonp的使用解惑
- 利用iframe實現(xiàn)ajax跨域通信的實現(xiàn)原理(圖解)
- JQuery的Ajax跨域請求原理概述及實例
- 完美解決AJAX跨域問題
- 用iframe設(shè)置代理解決ajax跨域請求問題
- jquery的ajax和getJson跨域獲取json數(shù)據(jù)的實現(xiàn)方法
- jquery跨域請求示例分享(jquery發(fā)送ajax請求)
- JavaScript使用HTML5的window.postMessage實現(xiàn)跨域通信例子
- ajax跨域請求js拒絕訪問的解決方法
- IE9版本以下ajax 跨域問題可行解決方法
- VC自定義消息響應(yīng)函數(shù)postmessage用法示例
- 使用HTML5中postMessage知識點解決Ajax中POST跨域問題
相關(guān)文章
C++ txt 文件讀取,并寫入結(jié)構(gòu)體中的操作
這篇文章主要介紹了C++ txt 文件讀取,并寫入結(jié)構(gòu)體中的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12