国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

VC中SendMessage和PostMessage的區別

2020-01-26 15:12:49
字體:
來源:轉載
供稿:網友

本文實例講述了VC中SendMessage和PostMessage的區別。分享給大家供大家參考。具體分析如下:

1、首先是返回值意義的區別,我們先看一下 MSDN 里的聲明:

復制代碼 代碼如下:
LRESULT SendMessage (  HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam );

復制代碼 代碼如下:
BOOL PostMessage(  HWND hWnd,
        UINT Msg,
        WPARAM wParam,
        LPARAM lParam);

 
其中 4 個參數的意義是一樣的,返回值類型不同(其實從數據上看他們一樣是一個 32 位的數,只是意義不一樣),LRESULT 表示的是消息被處理后的返回值,BOOL 表示的是消息是不是 Post 成功。
 
2、PostMessage 是異步的,SendMessage 是同步的

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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 郓城县| 宿迁市| 尚志市| 锡林浩特市| 尉氏县| 中方县| 定州市| 怀远县| 永平县| 平陆县| 怀安县| 霍林郭勒市| 德阳市| 常德市| 屏东县| 渝中区| 康马县| 沅江市| 河北省| 布拖县| 常熟市| 平江县| 铜梁县| 迁安市| 台北市| 冕宁县| 石门县| 同江市| 南靖县| 湄潭县| 泰和县| 南昌市| 德令哈市| 棋牌| 原平市| 荆门市| 小金县| 湘西| 蓬溪县| 卢氏县| 莱州市|