int CMyAppView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CButton *p_MyBut = new CButton();
p_MyBut->Create(_T("动态按钮"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20,10,80,40), this, IDC_MYBUTTON );
}
中创建的一个按钮,在void CMyAppView::OnDestroy()
{
CView::OnDestroy(); // TODO: 在此处添加消息处理程序代码
if(p_MyBut)
delete p_MyBut;
}报错“p_MyBut”: 未声明的标识符
“delete”: 不能删除不是指针的对象
这是为什么呢?

解决方案 »

  1.   

    把p_MyBut定义为CMyAppView类的成员变量。
      

  2.   

    p_MyBut是局部变量,用完后就销毁,因此你再delete的时候已经不存在了,你可以把他声明类的成员变量
      

  3.   


    CButton *p_MyBut = new CButton();
    p_MyBut->Create(_T("动态按钮"), WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON , CRect(20,10,180,140), this, 123 ); //创建
    p_MyBut->ShowWindow(SW_HIDE);  //隐藏
      

  4.   

    CView::OnDestroy();
    里写 p_MyBut->ShowWindow(SW_HIDE);  //隐藏另外,你的 CButton *p_MyBut = new CButton();
     写全局里去,也就是写最上面去。
      

  5.   

    把CButton *p_MyBut生命为类的成员函数