基于对话框程序的话,刚建的工程主界面上有一个确认和取消,运行时点其中任意一个都会退出应用程序
其他工程比如单文档,如果是新建的对话框,那么在这个对话框中得添加的一个按钮,然后里面的单击代码写exit(0); 这样按这个按钮就可以退出了
另外其实任何类型的工程的任何消息处理函数中有这条语句的话都会直接退出
首先确定一下,在VC6中,红色感叹号(Ctrl+F5)运行Release版本,是否有问题。
一般来说,三种可能比较高:
支持文件路径问题,因为两种方式的区别是当前工作目录不同,将exe复制到工程文件所在目录运行试试。
动态编译问题。默认Release是动态编译MFC,Debug是静态。将Release版本的工程配置选择为静态编译MFC,Rebuild All重新编译试试。
Win7造成的问题。这个可以在静态编译后,到XP下运行试试。
BOOL KillProcessFromName(CString strProcessName)
{
//创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//PROCESSENTRY32进程快照的结构体
PROCESSENTRY32 pe;
//实例化后使用Process32First获取第一个快照的进程前必做的初始化 *** 作
pedwSize = sizeof(PROCESSENTRY32);
//下面的IF效果同:
//if(hProcessSnap == INVALID_HANDLE_VALUE) 无效的句柄
if(!Process32First(hSnapShot,&pe))
{
return FALSE;
}
//将字符串转换为小写
strProcessNameMakeLower();
//如果句柄有效 则一直获取下一个句柄循环下去
while (Process32Next(hSnapShot,&pe))
{
//peszExeFile获取当前进程的可执行文件名称
CString scTmp = peszExeFile;
//将可执行文件名称所有英文字母修改为小写
scTmpMakeLower();
//比较当前进程的可执行文件名称和传递进来的文件名称是否相同
//相同的话Compare返回0
if(!scTmpCompare(strProcessName))
{
//从快照进程中获取该进程的PID(即任务管理器中的PID)
DWORD dwProcessID = peth32ProcessID;
HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);
::TerminateProcess(hProcess,0);
CloseHandle(hProcess);
return TRUE;
}
scTmpReleaseBuffer();
}
strProcessNameReleaseBuffer();
return FALSE;
}
以上就是关于如何实现:MFC编程,对话框内按钮动作实现退出应用程序全部的内容,包括:如何实现:MFC编程,对话框内按钮动作实现退出应用程序、MFC编写的对话框运行时发生基础类应用程序已停止工作、mfc如何彻底退出进程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)