Error

C++博客 首页 新随笔 联系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks
CWindow 封装了一个HWND,包装那些对窗口句柄操作的API。没有其他多余的动作。析构的时候不会自动销毁HWND
CWindowImpl三个模板参数,第一是窗口类,第二个默认是CWindow,第三个是窗口类型。


class ATL_NO_VTABLE CMessageMap
{
public:
 virtual BOOL ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
  LRESULT& lResult, DWORD dwMsgMapID) = 0;
};
atl的消息map基类,,,


牛逼神奇其实就那样的trunk技术:
在StartWinproc函数中完成trunk结构的初始化,保存有自己的指针。(_AtlWinModule先藏到这里,然后,,,)
然后就是用trunk代码(和内存hook类似的手法直接写机器码)地址,替代函数地址,当cpu准备去调用这个地址的函数时自动调用机器码,根据分析这里的机器码将函数的参数改变了,用和HWND关联的CWindowImplBaseT地址作为了HWND传入回调,这样就有了对象指针了,do whatever you like,,,
posted on 2011-08-07 08:32 Enic 阅读(211) 评论(0)  编辑 收藏 引用 所属分类: WTL 征程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理