既然MFC在所有窗口创建的时候用AfxWndProc替换掉了原窗口过程,那还要SubclassWindow方法做什么?
在SubclassWindow方法中也是用AfxWndProc来替换原窗口过程,这样一来,不是用相同的过程AfxWndProc对同一个窗口对象子类化两次吗?

解决方案 »

  1.   

    MFC在创建窗口的时候使用了AfxWndProc,并不代表所有窗口都使用MFC来创建。
      

  2.   

    MFC在创建对话框窗口的时候,对话框里的子窗口控制的过程有没有被替换成AfxWndProc呢?
      

  3.   

    Symptoms
    When you create ActiveX Controls dynamically via CWnd::CreateControl(), Windows messages are not sent to your CWnd-derived class. For example, if you create a handler for WM_KILLFOCUS, it is not called. Cause
    CWnd::CreateControl() does not subclass the HWND associated with the control. 如果是MFC中的创建窗口用到了AfxWndProc则
    在SubclassWindow方法中也是用AfxWndProc来替换原窗口过程,这样一来,不是用相同的过程AfxWndProc对同一个窗口对象子类化两次吗?也不会子类化两次,因为消息的起始点归结为AfxWndProc,从这里引发不同的消息路由,而SubClassWindow 只是将它重新指回到起始点而已,只不过这过程中可以由自己自己来定制(如改变窗口的外观等)这样便实现了子类化!呵呵,个人理解,仅供参考
      

  4.   

    对话框模扳里的子窗口控制的过程有没有被替换成AfxWndProc呢?
      

  5.   

    MFC的都被替换成了对话框的控制过程肯定也成这个啦