能举例详细解释一下句柄和指针的相同和不同之处么?

解决方案 »

  1.   

    两者的关系仅此而已。
    Class CWnd 
    {
     HWND m_hWnd;
    };
    MFC为了面向对象编程,把二者捆绑在一起。
      

  2.   

    从窗口指针获取窗口句柄:GetSafeHwnd();
    从窗口句柄获取临时窗口指针:FromHandle(); 
    从窗口句柄获取永久窗口指针: FromHandlePermanent();其实两者被没有关系,实际上是MFC在创建窗口的时候用钩子函数沟住HCBT_CREATEWND消息,
    然后通过CWnd::Attach()函数把二者捆绑在一起。
    以后就可以用GetSafeHwnd(),FromHandle(),FromHandlePermanent()这三个函数可以互相得到了。MFC之所以要这样做,主要是为了使原来的SDK面向过程的编程遍成面向对象的编程,所有的MFC的窗口都共用一窗口过程函数,在窗口过程函数里,通过窗口句柄(HWND)找到窗口对象指针(CWnd *)从而把消息分发到窗口对象中,这样以后就可以在窗口类中实行消息响应编程处理了。
      

  3.   

    http://blog.csdn.net/gabazi/archive/2005/11/17/531217.aspx
    http://blog.csdn.net/lbsjs/archive/2005/08/27/466354.aspx
    http://blog.csdn.net/feijj2002_/archive/2005/08/28/466683.aspx