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

相关文章

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失