先看看【Windows程序设计】的第三章:http://blog.csdn.net/zaodt/archive/2007/11/25/1901332.aspx
解决方案 »
- 关于文件分割传输的问题,请高手多多指教!急
- 熟悉21CFR Part 11 标准的朋友请进(重金请教)
- 关于对话框中的OnHScroll()
- 请问什么是聚合软件技术?
- 如何截获第三方软件的“文件保存”消息及保存的文件全路径名称
- 【研究】请教高手“QQKav”动态修改“窗口Caption”是如何实现的?【高手进】
- 只能用钩子函数捕捉某个应用程序的所有消息吗?
- 各位高手,判断本机是否连网所用的头文件Sensapi.h编译器为什么报找不到头文件的呢.
- 再问,如何得到editview中光标的位子,(在地几个字符后?)
- 各位高手,怎样调试DCOM?
- 一个很的奇怪的问题
- DirectX 能生成四边形的网格面吗?
看来是一个了?
1. 用户点击窗口上面的按钮控件,windows系统发送一条消息到该窗口的消息处理循环,该消息中包含按钮控件的pWnd
2. 消息发送到了该按钮的(如CButton类)中的消息处理函数,查看是否被处理
3. 如果该消息没有被处理, 在MFC模式下,控件消息均被父窗口拦截,拦截利用的是subclass机制,这里设置控件的新的消息处理函数,该消息处理函数会调用父窗口的消息处理函数
4. 父窗口中查找该消息是否在控件的消息映射表中被反射REFLECT,如果是则转到控件的消息处理函数处理。反射函数有时候会返回是否处理的一个标志,有些反射函数返回值是void,默认是已经处理了。如果在CMyButton:CButton中重载了OnNotify或者OnCommand,那么该处理函数会可能会覆盖掉这些反射处理函数,或者在OnChildNotify处理。
5. 如果该消息没有被反射或者反射处理函数返回0,那么在父窗口中查找处理函数