析构函数里能不能放别的函数,比如我在以下析构函数里添加了以下代码,
CMfcexp4_1View::~CMfcexp4_1View()
{
//if (cardID!=-1)        /****自己添加的,以前这个析构函数为空的******/
/* {
Release_Card(cardID);
}
KillTimer(1);*/
}
0错误 0警告,但是运行完程序后会弹出Debug assertion failed
program:E:\*.exe
file: afxwin2.inl
line:171
错误,请问我遇到的是什么问题,我的添加的两个函数:释放采集卡,和关闭定时器,该填在什么地方比较好?

解决方案 »

  1.   

    CWnd的Timer应该是在窗口销毁Ondestroy的时候释放。
      

  2.   

    //if (cardID!=-1)        /****自己添加的,以前这个析构函数为空的******/ 
    /* { 
    Release_Card(cardID); 

    这个应该可以放在析构函数里面
      

  3.   

    自己顶!
    楼主,把KillTimer(1); 去掉,应该就好了。
      

  4.   

    楼主看看
    BOOL CWnd::KillTimer(int nIDEvent)
    {
    ASSERT(::IsWindow(m_hWnd)); //析构函数里面m_hWnd是无效的,当然assert出错了。
    return ::KillTimer(m_hWnd, nIDEvent); 
    }
      

  5.   

    窗口销毁了那么killtimer就会出错,跟踪到killtimer内部就会知道原因
      

  6.   

    我跟踪了一下,先程序进入到 call CrtMessageWindow(10215240)时出现的异常,
    非常感谢15楼很细心,17楼画龙点睛,非常感谢我的问题得到了这么多人的帮助,
      

  7.   

    添加如下函数,问题解决!
    BOOL CMfcexp4_1View::DestroyWindow() 
    {
    // TODO: Add your specialized code here and/or call the base class
    KillTimer(1);
    return CView::DestroyWindow();
    }