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从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使