MFC单文档绘图(四)——进度条、禁止程序多开

2024-03-25 06:48

本文主要是介绍MFC单文档绘图(四)——进度条、禁止程序多开,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 禁止程序多开

常用程序退出方式:

(1)PostQuitMessage(0);//最常用
(2)PostMessage(WM_QUIT,0,0);//最常用
(3)::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用

 ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用
(4)ExitProcess(0);//注意使用时先释放分配的内存,以免造成内存泄露
(5)exit(0) ;//正常终止程序; exit(非0)非正常终止程序
(6)向主窗口发送WM_CLOSE消息SendMessage(WM_CLOSE); 
(7)如果要在其它类关闭应用程序,则AfxGetMainWnd->SendMessage(WM_CLOSE);

       而2,3,6,7均为程序已经启动时退出程序,4,5直接退出进程,需要释放相关内存分配,否则会造成不必要的内存泄露等问题,而1是先启动然后再退出。但是对于MFC程序都需要初始化,而单文档中有MainFrame,Doc,View和App等的初始化,经过调试发现最初调用的是App类,所以在App中进行判断是否打开和退出处理。

       最先想到的是在构造函数中处理,尽可能早的判断,但是需要手动去处理内存问题,通过查Windows下return,exit和ExitProcess的区别和分析发现没必要去处理内存问题,直接交给MFC自己去处理,也就是尽可能使用return,而App类的初始化InitInstance()就通过返回的值来进行对应的处理,TRUE则会进行进一步的初始化(MainFrame,Doc,View),FALSE则系统会对建立的全局或局部变量自动进行析构调用和程序退出处理。

避免程序多开:

    避免程序多开可以通过建立互斥量的方式,当再次打开时会建立相同的互斥量而发生错误,从而通过获取错误退出进行相关退出处理。

<span style="font-size:14px;"><span style="white-space:pre">	</span>// 避免重复打开HANDLE hMutex = CreateMutex(NULL, FALSE, "CAD_Aplication"); //创建互斥体if(GetLastError() == ERROR_ALREADY_EXISTS){// 如果已有互斥量存在则释放句柄并复位互斥量CloseHandle(hMutex);hMutex = NULL;AfxMessageBox("程序已经启动!");// 程序退出//exit(0);//ExitProcess(0);//PostQuitMessage(0);//会启动然后再关闭return FALSE;}</span>


2. 进度条实现

……

这篇关于MFC单文档绘图(四)——进度条、禁止程序多开的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/844164

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来