这篇文章从函数指针的角度理解MFC的消息映射。
首先了解下类的成员方法指针。类的静态成员方法指针和普通指针没什么区别,略过。主要了解一下类的非静态成员指针的用法
1.类的非静态成员指针的用法
c++将类的非静态成员编译成有this指针参数的方法。c++提供了"->*"和".*"运算符,来调用指针成员方法。
以代码说明问题
结果为
white
60nm
2.非静态成员函数指针数组
MFC中用AFX_MSGMAP_ENTRY* lpEntries储存了静态成员的指针。
下面代码实现了储存其指针的功能。
这里便出现了调用的问题。通用的函数指针Func是没有参数的,PowerValue是有参数有返回值的。这应该如何调用了。
3.强转调用有参数的函数指针
只要强转一下就可以了
代码如下
结果如下
white
60nm
260
MFC用枚举处理了这个问题。
4.MFC处理方法
代码如下
结果如下
white
260
有了这些基础,我们可以模仿MFC的消息映射了。下面代码说明了MFC消息映射的主要机制。
4.简明MFC消息映射代码
结果如下
Boolean
drawer
18
-6
over