程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> SendMessage原理初探

SendMessage原理初探

編輯:C++入門知識

今天跟蹤一下SendMessage的實現。

用向導先創建一個Windows application。

向導生成了一個簡單的窗口,如下。

在File菜單添加SendMessage,順便添加一個PostMessage,點擊菜單打開關於對話框,加入已下代碼。

用WinDbg調試,點擊SendMessage,程序斷在IDM_ABOUT的時候查看堆棧。

原來SendMessage是通過內部調用SendMessageWorker通過InternalCallWinProc直接調用的WndProc!!

跟蹤到調用InternalCallWinProc的地方看一下。

0x111就是WM_COMMAND,果然是直接把參數傳給了InternalCallWinProc

 

 

 

 

 

 

 

 

 

 

 

不用說,InternalCallWinProc肯定是調用了WndProc

。。。。大概就是這麼個流程,所以以後有人問SendMessage怎麼實現,簡單回單一句話就是直接調用WndProc,如下圖。

注:只針對同線程調用。

所以將代碼這樣修改後,功能和SendMessage看起來並沒有區別。

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