程序用的VC6加BCG,自己实现了一个停靠窗口,派生自CBCGPDockingControlBar
视图部分用的是资源中添加的一个对话框界面,里面还什么控件都没放
视图类派生自CFormView停靠窗口类中含有视图类成员,在创建时,把视图类创建出来,onsize里面调整视图类大小以上都没什么问题,程序启动也可以看到创建了出来,往视图类里摆什么控件也都OK就是关闭程序的时候报错,还是无法跟踪到代码那种
大概user break 什么什么的
研究半天不知道问题在哪里,请高手给点启示?
或者有没有别的更好的方法?

解决方案 »

  1.   


    new 了?
    delete 了没?
      

  2.   

    都没有new和delete
    view里面什么都没有,一个干净的formviewframe和view都是一个实体对象create出来,
    程序退出的时候貌似是在窗口析构过程中报错
      

  3.   

    CView类在父窗口被关闭的时候会在自己的OnNcDestroy()消息中调用delete this,如果你的CFormView是在栈上分配空间比如CMyFormView m_wndForm;的话在析构的时候它已经被delete掉了,自然会出错。
    正确的办法是在堆上分配CWnd *m_wndFView;
    m_wndFView = (CWnd *))RUNTIME_CLASS(CMyFormView)->CreateObject());
    m_wndFView.Create(...);不能手动调用delete m_wndFView;语句,父窗口销毁的时候会执行它,所以也不会有内存泄露。有这个特点的类还有CFrameWnd我以前也遇到这个问题过
      

  4.   

    谢谢mylanyuer,就是这个原因
    颇有感触,VC+MFC也用了许多年了,还是经常对一些机制类的问题搞不清
    一个如此古老的技术还能让人不断有收获,想来也挺了不起的
    当然也可能是我的确太弱了。。