我从CWnd继承一个类CXXX在该类使用了PostNcDestroy来自我删除(delete this)可是总是出错.报错文件:wincore.cpp
LRESULT CWnd::Default()
{
// call DefWindowProc with the last message
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
return DefWindowProc(pThreadState->m_lastSentMsg.message,
到这里就停了--> pThreadState->m_lastSentMsg.wParam, pThreadState->m_lastSentMsg.lParam);
}真不知道是什么原因,还请大家帮我分析一下谢谢!!!

解决方案 »

  1.   

    你那个窗口对象是new出来的吗?
      

  2.   

    如果是在栈上创建的对象,在delete时就会报invalid heap pointer错误了,能执行到这儿应该不是这个原因,怀疑delete的时机不对。把覆盖的PostNcDestroy代码贴出来看看。
      

  3.   

    不好意思我的问题已搞定.是因为我在定时器中用的DestroyWindow(),定时器函数执行到函数结尾时函数调用基本造成的.
    CXXX::OnTimer(UINT nIDEvent)
    {
       if(nIDEvent == xxx)
       {
         KillTimer(nIDEvent);
         DestroyWindow();
       }
       CWnd::OnTimer(nIDEvent); // 刚好它是间接调用CWnd::Default()
       // 把这句去掉就OK了
    }