VC++6.0实现MFC单文档模拟交通灯

news2025/1/2 0:26:38

要求:

模拟交通灯:

(1)建立一个单文档应用项目(项目名称为学生姓名拼音首字母缩写)。

(2)修改它的图标和版本信息。

(3)为该应用项目添加两个按钮到工具栏中。

(4)在视图窗口中显示三个圆,通过使用不同颜色的画笔及画刷来模拟交

通红、绿灯。

设计思路及结果功能描述:

       根据考核题目及要求,设计的思路如下:先建立一个单文档应用项目,修改其版本信息和图标,为该应用项目添加两个按钮到工具栏中,分别命名为“开始”和“停止”,在视图窗口中显示三个圆,使用不同颜色的画笔及画刷给三个圆上色,同时添加一个倒计时显示,最后将这几个元素关联起来。倒计时到一定的时间时,红黄绿等分别交替亮起,模拟交通灯。

设计方案如下,建立单文档后,修改版本和图标,添加“开始”和“停止”按钮,完成上述的操作后在hy_traffic_lightView.h文件下,定义了time_queue结构体,包含红绿灯的标识nLight_statu以及灯亮的时间值nTimeOut,定义了当前时间current_time_index和计数时间 _time_count。定义一个名为time_queue的动态数组,在OnInitialUpdate函数中向该数组尾部添加元素,即灯的状态与持续的时间值,通过push_back从尾部添加新元素,实现对结构进行初始化操作,以及交通灯逻辑功能的设置。

       在OnTimer函数中,根据得到的TimeOut值进行数值的变化并且根据当前值使用switchLight显示当前灯的状态,即给绘制的图形上色。

       在OnDraw函数中,实现使用memDC进行绘图显示,获取屏幕的大小后,通过算法得到三个矩形的位置坐标与宽度等参数,再在drawLight上使用Ellipse画内切圆,设置视图的背景颜色以及初始化逻辑刷子,以及添加根据LightStatus标识决定三个圆颜色的语句,同时使用Format设置倒计时显示的输出位置与格式设置,最后使用BitBlt将图拷贝到屏幕上显示。

       使用OnControlStart开启定时器,整个视图开始工作,OnControlStop关闭定时器,整个视图暂停,重新开启时,又会恢复最初的状态运行。

其功能就与日常所见的交通灯相同,附加了停止和开始的按钮,点击“开始”时,红灯先亮,伴随着时间的倒数,倒数到一定时间后,转为黄灯亮,再转为绿灯亮,依次循环;点击“停止”时,暂停在当前状态,当再次点击 “开始”时,又会重新运行。

        【修改图标的方法可参考之前发的博客】

运行结果如下:

 

 

完整代码参考:https://download.csdn.net/download/baiyan_gjr521/10404669?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168802106116800180664728%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168802106116800180664728&biz_id=1&utm_medium=distribute.pc_search_result.none-task-download-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-10404669-null-null.142^v88^insert_down38v5,239^v2^insert_chatgpt&utm_term=MFC%E6%A8%A1%E6%8B%9F%E4%BA%A4%E9%80%9A%E7%81%AF&spm=1018.2226.3001.4187.3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/701843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp如何使用canvas绘制海报,自适应屏幕尺寸,并且下载本地?

组件目录 /share-canvas.vue <template><u-popup :show"visiable" closeable close"hiddenCanvas" zIndex"999999"><view class"shareModel" touchstart"" touchmove"" touchend"">…

【机器学习】主成分分析实现案例 (PCA)

一、说明 这篇文章的目的是提供主成分分析&#xff08;PCA&#xff09;的完整和简化的解释。我们将逐步介绍它是如何工作的&#xff0c;这样每个人都可以理解并使用它&#xff0c;即使是那些没有强大数学背景的人。 PCA是网络上广泛覆盖的机器学习方法&#xff0c;并且有一些关…

CentOS7下载并安装mysql-8.0.33

CentOS7下载并安装mysql-8.0.33 一、官网下载mysql-8.0.33 MySQL下载路径 MySQL :: Download MySQL Community Server 自己百度mysql官网下载的话直接按照完整路径指示下载即可&#xff0c;如果点击上面的连接下载mysql的话&#xff0c;直接按照4、5、6步骤选择适合自己linu…

Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(八)

今天开始使用 vue3 ts 搭建一个项目管理的后台&#xff0c;因为文章会将项目的每一个地方代码的书写都会讲解到&#xff0c;所以本项目会分成好几篇文章进行讲解&#xff0c;我会在最后一篇文章中会将项目代码开源到我的GithHub上&#xff0c;大家可以自行去进行下载运行&…

从小白到大神之路之学习运维第49天---第三阶段----MHA高可用集群数据库的安装部署

第三阶段基础 时 间&#xff1a;2023年6月29日 参加人&#xff1a;全班人员 内 容&#xff1a; MHA高可用数据库集群 目录 一、MHA基础 &#xff08;一&#xff09;简介 &#xff08;二&#xff09;发挥过程 &#xff08;三&#xff09;组成 &#xff08;四&#x…

Quiz 5: Loops and Iterations | Python for Everybody 配套练习_解题记录

文章目录 课程简介Quiz 5: Loops and Iterations 单选题&#xff08;1-10&#xff09;编程题Exercise 5.2 课程简介 Python for Everybody 零基础程序设计&#xff08;Python 入门&#xff09; This course aims to teach everyone the basics of programming computers using…

C++语法练习(牛客题库)——练习1

1. 下列程序的运行结果是 1*2 3*4&#xff0c;那么横线处缺失程序可以是&#xff08;&#xff09; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <iostream> using namespace std; class Test{ public: Test(int a, int b) { …

【运维知识进阶篇】zabbix5.0稳定版详解6(zabbix自动化监控:自动发现+自动注册+监控项目主动式)

本篇文章继续给大家介绍zabbix自动化监控&#xff0c;包括zabbix自动注册&#xff0c;zabbix自动发现&#xff0c;将主机添加进服务端之后需要做的监控项目更改为主动式&#xff0c;zabbix说多不多&#xff0c;说少不少&#xff0c;其实远没有监控那么简单&#xff0c;更深层次…

【运维知识进阶篇】zabbix5.0稳定版详解7(zabbix分布式监控:使用场景+功能详解+快速部署+基本使用)

如果你有几百上千台客户端的数据需要上报给zabbix服务端&#xff0c;即便是你做了主动注册&#xff0c;监控项目主动式&#xff0c;那服务端压力还是会很大&#xff0c;所以我们可以考虑zabbix分布式监控。 zabbix proxy可以代替zabbix server收集性能和可用性数据&#xff0c…

【HTTP 协议1】图文详解 HTTP 请求和应答报文

文章目录 前言一、认识 HTTP 协议1, 什么是 HTTP 协议2, HTTP 协议的报文格式 二、HTTP 请求报文1, 认识方法1.1, GET 和 POST 辨析(重点)1.2, 其他方法 2, 认识 URL3, 认识 Header3.1, Host3.2, Content-Length3.3 Content-Type3.4, User-Agent3.5, Referer3.6, Cookie(重点) …

源代码|大屏可视化系统 数据可视化

代码拿来即可用&#xff0c;按照下文步骤配置&#xff0c;傻瓜式教程&#xff0c;几分钟即可搞定。 需要代码源文件&#xff0c;请移步至gzh【李桥桉】&#xff0c;s辛【可视化】。 可视化效果图 运行环境&#xff1a;VScode 文末附《大屏可视化系统》源代码获取方式~ 一、打…

数据结构--顺序栈的实现

数据结构–顺序栈的实现 顺序栈的定义 顺序栈的定义代码实现 #define MaxSize 10 typedef struct {ElemType data[MaxSize]; //静态数组存放栈中元素int top; //栈顶指针 } SqStack;int main() {SqStack S; //声明一个顺序栈(分配空间)//... ...return 0; }一些常见操作 初始…

大数据的金融数据读取及分析(-)

由于考虑商业数据问题&#xff0c;我们用开源数据做演示 一.tushare开源数据 Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程&#xff0c;能够为金融分析人员提供快速、整洁、和多样的便于分析的数据&#x…

postgresql_internals-14 学习笔记(七)—— parallel 并行

不完全来自这本书&#xff0c;把查到的和之前的文章重新汇总整理了一把。 一、 核心参数 几个容易弄混的进程和参数&#xff0c;关系图如下 1. max_worker_processes 整个实例可以同时运行的Background workers Processes最大数量默认值为8&#xff0c;设置为0表示禁用并行&…

STM32与树莓派:嵌入式系统开发与教育计算的区别

STM32和树莓派是两种不同的硬件平台&#xff0c;用于不同的应用领域。 STM32&#xff1a;STM32是一系列由STMicroelectronics&#xff08;意法半导体&#xff09;生产的32位ARM Cortex-M微控制器。它们被广泛用于嵌入式系统开发&#xff0c;包括消费电子产品、工业自动化、汽车…

CNN池化总结(最大池化与平均池化)

目录 概念 两种主要池化方式 最大池化 平均池化 尺寸变化过程 池化优点 总结 概念 池化&#xff08;Pooling&#xff09;&#xff0c;用于减小卷积神经网络&#xff08;CNN&#xff09;或其他类型神经网络的特征图&#xff08;Feature Map&#xff09;的尺寸&#xff0…

java 网络教学平台Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 JSP 网络教学平台 是一套完善的系统源码&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S模式开发。 研究的基本内容是基于Web的网络教学平台&…

【SWAT水文模型】SWAT-CUP参数率定过程问题总结

SWAT-CUP参数率定过程问题总结 Q1 SWAT-CUP中calibrate按钮一直是灰色无法点击?1.1 问题描述1.2 解决办法 Q2 “SWAT”不是内部命令1.1 问题描述1.2 解决办法 参考 Q1 SWAT-CUP中calibrate按钮一直是灰色无法点击? 1.1 问题描述 软件是从2W2E上下载的SWAT-CUP2019&#xff…

XILINX ZYNQ 7000 BOOT

参考UG585 内容 下面这张图是ZYNQ启动的关键流程 1.POR表示硬件复位&#xff0c;不关心Power-up也就是说冷热启动都行。Nor-POR就是非POR复位&#xff0c;有点软件应用复位的意思。 2.POR复位会复位所有寄存器。并且采集 HardWare boot pin的状态。这点很关键&#xff0c; 3.是…

mysql一些常用函数

group_concat()函数首先根据group by指定的列进行分组&#xff0c;并且用分隔符分隔&#xff0c;将同一个分组中的值连接起来&#xff0c;返回一个字符串结果。 group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator 分隔符])-- 指定排序方式和分隔符 se…