? ??? 在Win32里面。有2類通知事件。在舊的Windows設計中通知事件也是通過WM_COMMAND發(fā)送的。在Windows 3.X中 通知事件是通過 WM_COMMAND發(fā)送的。在后來的版本中 WM_COMMAND 根本無法滿足需求。而是 MS引入了 WM_NOTIFY來處理通知事件。而通知事件實際上是通知父窗口。而不是主窗口。
?
??? 在組件里。要處理通知事件,不是一件容易的事情。因為組件的通知事件一般都在它的父窗口產(chǎn)生。很多框架引入了“容器”的概念。容器是能夠包含子組件的一類特殊組件。為了簡化設計。我的庫里面沒有了容器組件的概念。在窗口(組件)處理WM_COMMAND 消息的時候。通知類事件通過HIWORD(wParam)獲取。如果不為 0 則是通知(否則為命令事件)。此事根據(jù) lparam指定的 hwnd找到組件對象指針。然后調(diào)用 “命令通知”虛方法。此時,命令通知事件的映射就完成了。
?
?? 和“命令通知”一樣。WM_NOTIFY事件也是直接交給“組件類”本身處理的。這樣就可以實現(xiàn)由組件自身來處理自己特有的事件了。
?
????用法: 組件.掛接組件事件(組件事件號,&事件處理子程序);
?? 比如組合框的選擇改變事件,
組合框.掛接組件事件(#CBN_SELCHANGE,&_組合框_選擇被改變)??????? 到目前為止。對命令事件 窗口事件 通知事件。都有了一個完善的在支持。
??? 接下來的工作就是對Windows標準組件進行封裝了。