再谈c++ thuck

来源:互联网 发布:知乎 正义联盟 编辑:程序博客网 时间:2024/06/05 19:44

很久之前写过一篇文章c++ thunk.但是当时其实对这个玩意不是太熟悉.

现在无意间想到一个问题atl的消息循环是如何处理的,然后就看了看atl的代码.发现atl就是用这种技术解决这个问题的.

一直羞愧与到现在了竟然才对atl的消息循环感兴趣,之前都是怎么写程序的.汗颜.


本人比较懒,不是太想仔细描述细节.

大概的意思就是把类的一个成员m_thunk变成可执行指令.然后强制转换m_thunk的地址为窗口的WndProc.

而这块指令所执行的命令就是将系统传过来的第一个参数HWND,转换为this指针,然后调用自己的WndProc.

这样对应类的WndProc的第一个参数就是指向窗口的指针了.这样就可以方便的对应起句柄和类之间的关系.

这种消息映射比MFC高明许多.