程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 不要使用PostMessage發行帶指針參數的消息

不要使用PostMessage發行帶指針參數的消息

編輯:.NET實例教程

我們知道PostMessage與SendMessage不同,它是一個非同步發送消息的函數,即它發送了消息以後,並沒有辦法知道消息是不是被處理了。所以當使用PostMessage給本線程的窗口發送消息時,這個消息將會在下次GetMessage的時候得到並處理,所以類似下面的代碼是很危險的

LRESULT WndProc(HWND hwnd ...)

{

       ......

 

       TCHAR buf[] = "Win32";

       PostMessage(hwnd , WM_SETTEXT, NULL ,buf);

}

因為當下次GetMessage處理WM_SETTEXT的時候,buf所在的內存已經無效了。

所以當PostMessage發送的是值小於WM_USER的Windows自帶消息的時候,如果該消息的參數有指針,那麼PostMessage會立即失敗而不做任何發送消息的工作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved