利用THUNK技术回调类成员函数,是一项前几年很热门的技术,网上的资料和示例代码也很多,但这些代码普遍存在一些差强人意的地方,要么缺乏通用性,需要针对不同的回调函数作调整,要么使用起来不方便,需要在应用代码里写上三、四行以上不相关(甚至有些莫名其妙)的代码或宏,不便于代码的阅读和维护。
针对这些缺点,我编写了一个更为简单易用的使用THUNK技术的回调函数类,类代码和示例如下:
第一个应用实例:派生一个回调无参数类成员函数的定时器的类。
由此实例可以看出,读者在使用CThunkBase基类时,只需要两行语句,一是public CThunkBase,二是GetFuncAddr。是不是简单明了啊?
然后,我们再来看一下基于CThunkBase派生的一个简单的窗口类及其调用实例:
同第一个派生类一样,也只需要两行代码,public CThunkBase和GetFuncAddr。其实,在多重派生里CThunkBase运行结果依然正确。
由于水平有很,代码中难免存在漏洞,欢迎指正。