如题

解决方案 »

  1.   

    m_thunk 为 CWndProcThunk 类型,CWndProcThunk 内部使用 CStdCallThunk。CStdCallThunk 提供在不同硬件平台(X86,AMD,ALPHA)上 WNDPROC 和 二进制码(汇编代码)直接的转换,
    在不同平台调用一个 WNDPROC 函数的二进制码(汇编代码)都是不同的,这样 COM 就可以编译支持不同的平台。
      

  2.   

    m_thunk.Init(GetWindowProc(), this); 这句话的意思当然就是使用当前示例的 WNDPROC  来初始化 CWndProcThunk   类型的 m_thunk 成员了。
      

  3.   

    没有CStdCallThunk类的代码,不清楚它的实现
      

  4.   

    m_thunk.Init(GetWindowProc(),   this);
    意思是强制的为GetWindowProc()返回的类静态函数加一小段机器指令(手法比较黑)
    该段指令吧目标函数第一个参数hWnd改写成类的this指针
    这样有了this,静态函数就可以调用this所指的类的非静态成员。