文件A.cpp
CLASSA *PA;  //全局的指针。
 PA = NEW CLASSA ;
  PA->CREATE(IDD_DIA,this);
 PA->showwindow(sw_show);
....文件B.cpp
 在对应的IDD_DIA 对话框的类中判断:当按下鼠标左键时退出。
  ONLBUTTON()
{ PA-》DESTROYWINDOW();}
 destroywindow()
 {
   。 //释放其他的东西
    
      DELETE PA;   //可以在这里杉吗??还是要在文件A.cpp中删???
      PA = NULL;
 }不定时的会报执行了非法操作,窗口无法删除,有时又正常不会报错怎么绘事?

解决方案 »

  1.   

    文件B.cpp 是什么文件? 含有A的对话框资源吗?
    你这样调用不行的,要把A.h包含入文件B.h
    重载B中的OnDestroy(),在其中写入

      。 //释放其他的东西 
        
          DELETE PA; 
          PA = NULL; 

    之前你的想法也可以,你先试试看,如果不行就用我说的方法。另外,如果你有按钮关闭程序,直接调用
    DestroyWindow() ,它会接着调用OnDestroy
      

  2.   

    或者在A的析构函数里面添加delete this
      

  3.   

    首先,非模态对话框的销毁是要DestoryWindow的。所以,在你的左键单击中要调用这个函数。
    DestoryWindow会产生WM_NCDESTROY消息,这时对话框已经销毁。
    最后,PostNcDestroy()  重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用,所以,在你的对话框类里面重载PostNcDestroy(),在里面delete this.