VC中sendmessage與postmessage的區別

來源:互聯網
上載者:User
 

SendMessage將指定的訊息發送到一個視窗或多個視窗。SendMessage為這個指定的訊息調用視窗處理常式,直到視窗處理完這個程式後才會返回。和SendMessage函數相比,PostMessage函數發送一個訊息到線程訊息對列中,並立即返回。

函數原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);

    參數:

    hWnd:其視窗程序將接收訊息的視窗的控制代碼。如果此參數為HWND_BROADCAST,則訊息將被發送到系統中所有頂層視窗,包括無效或不可見的非自身擁有的視窗、被覆蓋的視窗和彈出式視窗,但訊息不被發送到子視窗。

    Msg:指定被發送的訊息。

    wParam:指定附加的訊息指定資訊。

    IParam:指定附加的訊息指定資訊。

    傳回值:傳回值指定訊息處理的結果,依賴於所發送的訊息。

    備忘:需要用HWND_BROADCAST通訊的應用程式應當使用函數RegisterWindowMessage來為應用程式間的通訊取得一個唯一的訊息。

    如果指定的視窗是由調用線程建立的,則視窗程序立即作為子程式調用。如果指定的視窗是由不同線程建立的,則系統切換到該線程並調用恰當的視窗程序。線程間的訊息只有線上程執行訊息檢索代碼時才被處理。發送線程被阻塞直到接收線程處理完訊息為止。

    Windows CE:Windows CE不支援Windows案頭平台支援的所有訊息。使用SendMesssge之前,要檢查發送的訊息是否被支援。

    速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;標頭檔:winuser.h;輸入庫:user32.lib;Unicode:在Windows NT環境下以Unicode和ANSI方式實現。

PostMessage

    函數功能:該函數將一個訊息放入(寄送)到與指定視窗建立的線程相聯絡訊息佇列裡,不等待線程處理訊息就返回。訊息佇列裡的訊息通過調用GetMessage和PeekMessage取得。

    函數原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);

    參數

    hWnd:其視窗程序接收訊息的視窗的控制代碼。可取有特定含義的兩個值:

    HWND.BROADCAST:訊息被寄送到系統的所有頂層視窗,包括無效或不可見的非自身擁有的視窗、被覆蓋的視窗和彈出式視窗。訊息不被寄送到子視窗。

    NULL:此函數的操作和調用參數dwThread設定為當前線程的標識符PostThreadMessage函數一樣。

    Msg:指定被寄送的訊息。

    wParam:指定附加的訊息特定的資訊。

    IParam:指定附加的訊息特定的資訊。

    傳回值:如果函數調用成功,返回非零值:如果函數調用失敗,傳回值是零。若想獲得更多的錯誤資訊,請調用GetLastError函數。

    備忘:需要以 HWND_BROADCAST方式通訊的應用程式應當用函數 RegisterwindwosMessage來獲得應用程式間通訊的獨特的訊息。

    如果發送一個低於WM_USER範圍的訊息給非同步訊息函數(PostMessage.SendNotifyMessage,SendMesssgeCallback),訊息參數不能包含指標。否則,操作將會失敗。函數將再接收線程處理訊息之前返回,寄件者將在記憶體被使用之前釋放。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.