在VC6中如何实现按下“退出”键销毁整个应用程序
我向各位前辈讨教一个问题:我写了一个单文档向导生成的ODBC接口模式数据库软件,并为其创建了登录对话框(类名为:CLoad),其中想单击“取消登录”按钮便退出整个应用程序...
我向各位前辈讨教一个问题:
我写了一个单文档向导生成的ODBC接口模式数据库软件,并为其创建了登录对话框(类名为:CLoad),其中想单击“取消登录”按钮便退出整个应用程序,我在 Load.cpp 中这个按钮的消息处理函数中写的代码如下:(加载了头文件:#include "MainFrm.h")
void CLoad::OnCancel()
{
// TODO: Add extra cleanup here
CMainFrame* pcmf;
pcmf->DestroyWindow();
//CDialog::OnCancel();
}
编译没错误没警告,点击该按钮后弹出了 : *.exe应用程序错误这个异常对话框,几秒后,标题栏会提示 没有响应。
请问,功能代码该如何编写?
小弟刚学VC++ 不久,只知道DestroyWindow()是销毁窗口的,是不是还有内存没有回收啊,请各位高手赐教,谢谢!
非常感谢各位前辈为小弟指导,可是我刚学VC不久,连MFC生成的框架结构都还没完全搞清楚之前,对于前两位的方法,小弟暂时还看不懂,能不能说得更详细,谢谢!另外,我照第三种方法试了一下,代码无论放在初始化函数InitInstance()的哪个位置都没解决问题,是不是 CDialog::OnCancel(); 这条语句在作怪! 展开
我写了一个单文档向导生成的ODBC接口模式数据库软件,并为其创建了登录对话框(类名为:CLoad),其中想单击“取消登录”按钮便退出整个应用程序,我在 Load.cpp 中这个按钮的消息处理函数中写的代码如下:(加载了头文件:#include "MainFrm.h")
void CLoad::OnCancel()
{
// TODO: Add extra cleanup here
CMainFrame* pcmf;
pcmf->DestroyWindow();
//CDialog::OnCancel();
}
编译没错误没警告,点击该按钮后弹出了 : *.exe应用程序错误这个异常对话框,几秒后,标题栏会提示 没有响应。
请问,功能代码该如何编写?
小弟刚学VC++ 不久,只知道DestroyWindow()是销毁窗口的,是不是还有内存没有回收啊,请各位高手赐教,谢谢!
非常感谢各位前辈为小弟指导,可是我刚学VC不久,连MFC生成的框架结构都还没完全搞清楚之前,对于前两位的方法,小弟暂时还看不懂,能不能说得更详细,谢谢!另外,我照第三种方法试了一下,代码无论放在初始化函数InitInstance()的哪个位置都没解决问题,是不是 CDialog::OnCancel(); 这条语句在作怪! 展开
4个回答
展开全部
你好,唐宗淙,你提出的这个问题,其实有很多种方法解决。
如果你现在初学VC,还连MFC框架结构都还不十分熟练的情况下,代码可以这样编写:
void CLoad::OnCancel()
{
ExitProccess(0);
}
至于原因,你可以自行查询MSDN。
很多问题,都可以通过MSDN找帮助,只是不知道你的英语怎么样。
另外,最好的方法也是用得最普遍的方法是 2 楼说的,也是我经常用的,你可以查找相关书籍。
还有,3 楼说的方法我见得很少,我也试了一下,可以的啊,怎么你试就不行了?可能你要检查你的消息机制,具体我就不讲了。
不知你学VC是怎么的过程,是学校学的?还是自学的?如果是自学,我建议你弄一本孙鑫著的书,叫《VC++深入详解》,我就是由这本书开始学VC的,这本书适合初学者,也适合有一定层次的程序员作为参考之用,讲得比较详细,有很多基础应用方面的东西。
我很欣赏你这种学法,连MFC框架还不十分清楚,就开始编写数据库程序了!学VC,的确要各方面都先涉及,先不要搞清楚原理性的东西,到了能够编写程序了,有些原理性的东西是可以自己理解的,水到渠成。
C++是个好东西,没有它写不出来的程序,(至少有很多人这样讲)。我从VB过渡到用C++,就对C++ 一见钟情,希望能和你交个朋友,我们以后在C++这一块交流经验吧!
其次,请注意,MFC 是微软的基础类库(也有人叫标准类库),而生成框架的是 应用程序向导,概念要弄清。
如果你现在初学VC,还连MFC框架结构都还不十分熟练的情况下,代码可以这样编写:
void CLoad::OnCancel()
{
ExitProccess(0);
}
至于原因,你可以自行查询MSDN。
很多问题,都可以通过MSDN找帮助,只是不知道你的英语怎么样。
另外,最好的方法也是用得最普遍的方法是 2 楼说的,也是我经常用的,你可以查找相关书籍。
还有,3 楼说的方法我见得很少,我也试了一下,可以的啊,怎么你试就不行了?可能你要检查你的消息机制,具体我就不讲了。
不知你学VC是怎么的过程,是学校学的?还是自学的?如果是自学,我建议你弄一本孙鑫著的书,叫《VC++深入详解》,我就是由这本书开始学VC的,这本书适合初学者,也适合有一定层次的程序员作为参考之用,讲得比较详细,有很多基础应用方面的东西。
我很欣赏你这种学法,连MFC框架还不十分清楚,就开始编写数据库程序了!学VC,的确要各方面都先涉及,先不要搞清楚原理性的东西,到了能够编写程序了,有些原理性的东西是可以自己理解的,水到渠成。
C++是个好东西,没有它写不出来的程序,(至少有很多人这样讲)。我从VB过渡到用C++,就对C++ 一见钟情,希望能和你交个朋友,我们以后在C++这一块交流经验吧!
其次,请注意,MFC 是微软的基础类库(也有人叫标准类库),而生成框架的是 应用程序向导,概念要弄清。
展开全部
exit函数,可以整个进程。
定义 void exit(int status); status为退出时应用程序的返回值,0为正确退出,非零为发生错误。
用法:
exit(0);
MSDN Library解释请参看 http://msdn.microsoft.com/en-us/library/6wdz5232(VS.71).aspx
定义 void exit(int status); status为退出时应用程序的返回值,0为正确退出,非零为发生错误。
用法:
exit(0);
MSDN Library解释请参看 http://msdn.microsoft.com/en-us/library/6wdz5232(VS.71).aspx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CLoad loginDlg;
if( IDCANCEL == loginDlg.DoModal() )
{
return FALSE;
}
将这段代码放在***App类的 InitInstance里的前面部分,return FALSE即表示退出整个应用程序。
你的CLoad::OnCalcel不用去重载的。默认即可
if( IDCANCEL == loginDlg.DoModal() )
{
return FALSE;
}
将这段代码放在***App类的 InitInstance里的前面部分,return FALSE即表示退出整个应用程序。
你的CLoad::OnCalcel不用去重载的。默认即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好在方法PostNcDestroy
中加上delete this;
还有看看有没有野指针
记得删掉或者置空
中加上delete this;
还有看看有没有野指针
记得删掉或者置空
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询