在Win32里面。有2类通知事件。在旧的Windows设计中通知事件也是通过WM_COMMAND发送的。在Windows 3.X中 通知事件是通过 WM_COMMAND发送的。在后来的版本中 WM_COMMAND 根本无法满足需求。而是 MS引入了 WM_NOTIFY来处理通知事件。而通知事件实际上是通知父窗口。而不是主窗口。
在组件里。要处理通知事件,不是一件容易的事情。因为组件的通知事件一般都在它的父窗口产生。很多框架引入了“容器”的概念。容器是能够包含子组件的一类特殊组件。为了简化设计。我的库里面没有了容器组件的概念。在窗口(组件)处理WM_COMMAND 消息的时候。通知类事件通过HIWORD(wParam)获取。如果不为 0 则是通知(否则为命令事件)。此事根据 lparam指定的 hwnd找到组件对象指针。然后调用 “命令通知”虚方法。此时,命令通知事件的映射就完成了。
和“命令通知”一样。WM_NOTIFY事件也是直接交给“组件类”本身处理的。这样就可以实现由组件自身来处理自己特有的事件了。
用法: 组件.挂接组件事件(组件事件号,&事件处理子程序);
比如组合框的选择改变事件,
- 组合框.挂接组件事件(#CBN_SELCHANGE,&_组合框_选择被改变)
到目前为止。对命令事件 窗口事件 通知事件。都有了一个完善的在支持。
接下来的工作就是对Windows标准组件进行封装了。