我在程序中想要做个对话框,想作成像BCG的例子中 BCGCONTROLS那样的,使用outlookpane样式的propertysheet
但是发现了一个问题,似乎在多个BCG版本中都存在,不知道该如何解决
就是我只能把bcgppropertysheet这个类使用在对话框程序中作为mainwnd,
如果想在自己的程序中,根据需要弹出一个新的sheet,那么在关闭它的时候会报错通过DEBUG,发现是在窗口析构的时候 remove 一个 dockbar的指针出错的,并且这个指针没通过iskindof识别出来,最终ASSERT FAILE了
可是我跟踪bcgcontrols这个程序的时候,析构过程中没有GET到这个窗口指针,所以就没给它析构我仿照BCGCONTROLS这个工程,自己创建了一个基于对话框的程序,并且把对话框类从BCGPROPERTYSHEET类中派生了,其它用法都一样,在关闭的时候就没问题
我很头大。。跪请高手指点

解决方案 »

  1.   

    哪个版本的bcg  低版本的bug较多
      

  2.   

    如果没有资源泄漏,那么就不主动delete释放等,来防止bug
      

  3.   

    回楼上,BCG版本956,太低了吗?2楼,没有主动delete释放任何东西。
    是这样的,debug模式下会出这个问题,release不会,报错就是一句assert
    就是propertysheet的domodal返回后析构出错
    而且如果程序本身就是个基于dialog base的小程序,把dialog从cbcgppropertysheet派生,不会出问题(比如bcg自带的例子 BCGPCONTROLS);但是如果是个普通单文档的MFC程序,使用这样的sheet,在domodal后就会报错报错的地方在D:\BCGSoft\BCGControlBarPro\BCGCBPro\BCGPBaseControlBar.cpp中
    RemoveControlBarFromDockManager()函数如果是dialog程序,在第三行就return掉了;但是其他情况,就会得到一个pParentFrame,并且在最后的
    ASSERT (FALSE);中报错退出