a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

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

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

圖片精選

主站蜘蛛池模板: 成人毛片在线免费看 | 黄色的网站免费观看 | 国产精品欧美日韩在线观看 | 久久久久久久国产精品 | 欧美精品一区二区三区在线 | 在线看黄色av | 亚洲毛片在线 | 日本一区二区三区四区不卡视频 | 亚洲成人免费视频 | 91高清免费 | 国产91久久精品一区二区 | 亚洲午夜精品久久久久久app | 欧美日韩一区二区三区免费视频 | 夜夜撸av| 日本一区二区在线视频 | 九九色综合 | 日本精品一区二区三区视频 | 男女免费在线观看视频 | 五月激情综合 | 一级片国产 | 在线看片日韩 | 久久久久免费精品视频 | 中文字幕一页二页 | 国产精品无码久久久久 | 三级av网站 | 欧美一区二区三区四区五区 | 精品国产乱码久久久久久丨区2区 | 国产精品一区在线 | 亚洲成人免费观看 | 久久国产成人午夜av影院宅 | 亚洲日本午夜 | 亚洲女人天堂av | 国产少妇在线 | 日韩精品在线观看一区 | 久久久久国产一区二区三区四区 | 久久99国产精品久久99大师 | 国产美女在线观看精品 | 青青国产在线 | 中文成人av| 日本1区2区 | 久久精品无码一区二区日韩av |