BOOL CWnd::Attach(HWND hWndNew)
{
ASSERT(m_hWnd == NULL);     // only attach once, detach on destroy
ASSERT(FromHandlePermanent(hWndNew) == NULL);//跟踪指向这里???
// must not already be in permanent map if (hWndNew == NULL)
return FALSE; CHandleMap* pMap = afxMapHWND(TRUE); // create map if not exist
ASSERT(pMap != NULL); pMap->SetPermanent(m_hWnd = hWndNew, this);#ifndef _AFX_NO_OCC_SUPPORT
AttachControlSite(pMap);
#endif return TRUE;
}

解决方案 »

  1.   

    ASSERT(FromHandlePermanent(hWndNew) == NULL);//跟踪指向这里???
    ---------------------------------------------------
    说明你的hWndNew已经附着了一个CWnd类实例,不能再Attach了
      

  2.   

    那该怎么办呢?
    使用FromHandle可不可以呢?
      

  3.   

    谁能告诉我Attach 和 Detach 的用途是什么?
      

  4.   

    用Attach之前要先DeleteObject,之后不用了就DetachAttach就是把一个句柄和一个对象绑定,通过对象可以直接操作句柄
    Detach就是接触绑定
      

  5.   

    MFC将CWnd到HWND的映射分为两类:永久Permanent和临时Temporary
    Attach是将一个源生的HWND句柄(比如WindowsAPI创建的窗口句柄)永久关联到一个CWnd实例。
    FromHandle则是将一个源生的HWND句柄临时关联到一个CWnd实例。
    临时关联有一个限制是在Idle处理中有可能取消这个关联,所以尽量不要将FromHandle返回的CWnd*指针保存使用