自定义的停靠栏窗口在关闭的时候会报错

rainliuyu 2011-05-23 07:35:03
程序用的VC6加BCG,自己实现了一个停靠窗口,派生自CBCGPDockingControlBar
视图部分用的是资源中添加的一个对话框界面,里面还什么控件都没放
视图类派生自CFormView

停靠窗口类中含有视图类成员,在创建时,把视图类创建出来,onsize里面调整视图类大小

以上都没什么问题,程序启动也可以看到创建了出来,往视图类里摆什么控件也都OK

就是关闭程序的时候报错,还是无法跟踪到代码那种
大概user break 什么什么的


研究半天不知道问题在哪里,请高手给点启示?
或者有没有别的更好的方法?
...全文
63 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainliuyu 2011-06-01
  • 打赏
  • 举报
回复
谢谢mylanyuer,就是这个原因
颇有感触,VC+MFC也用了许多年了,还是经常对一些机制类的问题搞不清
一个如此古老的技术还能让人不断有收获,想来也挺了不起的
当然也可能是我的确太弱了。。
rainliuyu 2011-05-31
  • 打赏
  • 举报
回复
顶一下
这两天忙着没顾上回来,抽空试一下楼上的方法,先谢过
月中蓝 2011-05-29
  • 打赏
  • 举报
回复
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

我以前也遇到这个问题过
rainliuyu 2011-05-29
  • 打赏
  • 举报
回复
都没有new和delete
view里面什么都没有,一个干净的formview

frame和view都是一个实体对象create出来,
程序退出的时候貌似是在窗口析构过程中报错
「已注销」 2011-05-24
  • 打赏
  • 举报
回复

new 了?
delete 了没?



rainliuyu 2011-05-24
  • 打赏
  • 举报
回复
没人解答。。
rainliuyu 2011-05-23
  • 打赏
  • 举报
回复
顶一下

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧