我做了一个MFC应用程序,但出现了这样的问题:
我在一个CChildView 类中定义了一个视图类CConView,在CConView类中定义了几个CButton 控件。
在CConView的OnCreate函数中添加了如下代码:
CString caption[9];
caption[0]="新建合同";caption[1]="查询条件";caption[2]="查看详细信息";
caption[3]="修改合同";caption[4]="删除选中";caption[5]="按时间升序";
caption[6]="按时间降序";caption[7]="按金额升序";caption[8]="按金额降序";
for(int i=5;i<9;i++){
m_btn[i].Create(caption[i],BS_RADIOBUTTON | WS_CHILD |WS_VISIBLE,
CRect(0,0,0,0),this,1055);
m_btn[i].MoveWindow(m_clientRect.right-500+(i-5)*125,0,125,20);
}
for(i=0;i<5;i++){
m_btn[i].Create(caption[i],BS_PUSHBUTTON | WS_CHILD |WS_VISIBLE,
CRect(0,0,0,0),this,1050+i);
m_btn[i].MoveWindow(m_clientRect.right-500+i*100,20,100,20);
}
现在我只要点击任何一个按钮,然后点击CChildView中让CConView关闭的按钮就会出现异常。
CChildView中让CConView关闭的按钮是这样写的:
delete m_wnd;//m_wnd指向CConView的对象。
如果不点击CConView中的按钮,关闭CConView则能正常进行。
请问这是为什么?
请各位高手指点一二,不胜感激!

解决方案 »

  1.   

    1.程序是多文档的吗?
    2.CChildView 是你自己定义的类,父类是啥?还是CChildFrame类?
      

  2.   

    创建窗口释放不是用delete
    delete m_wnd; 改成 m_wnd.DestroyWindow();
      

  3.   

    m_btn[i].Create(caption[i],BS_RADIOBUTTON | WS_CHILD |WS_VISIBLE, 
    CRect(0,0,0,0),this,1055);  // 这4个按钮的ID都是 1055??
      

  4.   

    用SendMessage(m_hWnd,WM_CLOSE,0,0)就可以了,
    你的视图不是new出来的,就不需要删除,
    你的那些按钮在试图销毁时,要释放掉用DestroyWindow
      

  5.   

    MFC类的对象最好不要用delete删除,调用destoryWindow函数就行。用delete很容易出现异常。