我做了一个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则能正常进行。
请问这是为什么?
请各位高手指点一二,不胜感激!
我在一个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则能正常进行。
请问这是为什么?
请各位高手指点一二,不胜感激!
2.CChildView 是你自己定义的类,父类是啥?还是CChildFrame类?
delete m_wnd; 改成 m_wnd.DestroyWindow();
CRect(0,0,0,0),this,1055); // 这4个按钮的ID都是 1055??
你的视图不是new出来的,就不需要删除,
你的那些按钮在试图销毁时,要释放掉用DestroyWindow