PPT演讲计时器

下载

GitHub 源码地址

如果访问不到的话,可以从百度盘下载:

链接:https://pan.baidu.com/s/1bK4sug-eK85fmPgi9DzhcA
提取码:0vp3
文件:VB.Equal.Timer-VB计时器软件-绿色无残留

写在前面

转眼也工作了两年了,从大学毕业就再也没正经写过CSDN,到时工作以来的工作日志没有间断,甚至一开始连中午吃啥都记得明明白白,从今天开始希望经常搞点 “事情”,并且整理出来,看我都能编些什么软件。

1、奇葩的起因

计时器应用是在大学时做的,最后一次修改vb的源码是13年6月16日,做这个应用的原因是当时的课前演讲让我计时,我在对自己班同学轮番放水后,实在是无法拒绝其他班的同学的放水请求,所以就做了一个计时器,从此也把我从计时这件事情上解脱了下来……

2、简单的需求

软件最初设计的非常简单,因为需求就很简单:5分钟倒计时……
不过也就在那阶段,我也是不断地对其进行修改,前前后后居然修改出了64次版本,现在想想那时候也真是执着。

3、我觉得所谓的难点

当时对软件开发还是比较懵懂无知的,都是想一步是一步,再加上那时候重度强迫症,更是纠结,其实整个软件核心部分就是计时,如何计时准确是成功的关键,我也曾在网上找过其他计时软件,有的很明显就是……

Sleep(1000);

这样计时会有比较大的偏差、因为软件运行还有时间,再加上Sleep的时间,运行越久误差越大,我使用的是运行前和运行后的时间戳差的方式,来记录经过的时间,如下:

Private Sub Timer_F_Timer()
'这里获取当前的时间'
GetLocalTime t'如果当前时间比上次记录的时间大'
If t.wMilliseconds > time_mark_time Thentime_stepcha = t.wMilliseconds - time_mark_time
Else'这里处理用户人为修改日期时间,造成当前时间小于上次记录时间的情况'
End If'如果时间差比剩余时间大,就继续减'
If TIMEMS > time_stepcha ThenTIMEMS = TIMEMS - time_stepcha
Else'如果剩余时间小于时间差,那么就说明时间到了'
End If'这里可以进行时间的显示'
'这里记录一下当前时间,下次循环备用'
time_mark_time = t.wMilliseconds
End Sub

其实也并不复杂,这样就可以完美覆盖每一次循环,不会再出现Sleep那样的误差,至于循环时的时间显示,可以按照自己希望的格式来实现,刷新的频率可以控制循环的间隔,基本就OK了。
这个时间的算法后来我在一次考试项目中也用到了,不过是用JS实现的,也差不多,在文章最后附的源码里,有网页版的源码。

4、一些程序中的截图

主界面
主界面

选项菜单
选项菜单

软件说明
软件说明

请高人不吝赐教。

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

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

相关文章

2万字!66道并发面试题及答案

我花了点时间整理了一些多线程,并发相关的面试题,虽然不是很多,但是偶尔看看还是很有用的哦!话不多说,直接开整!01 什么是线程?线程是操作系统能够进⾏运算调度的最⼩单位,它被包含在…

stl向量_如何在C ++ STL中将数组元素复制到向量?

stl向量Given an array and we have to copy its elements to a vector in C STL. 给定一个数组,我们必须将其元素复制到C STL中的向量。 将数组元素复制到向量 (Copying array elements to a vector) In C STL, we can copy array elements to a vector by using…

YoloV8的目标检测推理

YoloV8的目标检测推理 原始的YoloV8封装的层次太高,想要为我们所用可能需要阅读很多API,下面给出比较简单的使用方式 导入所需的库 os:用于操作文件系统。cv2 (OpenCV):用于图像处理。numpy:提供数学运算&#xff0…

【翻译】从Store生成Checkbox Group

原文:Ext JS: Generating a Checkbox Group from a StoreExt JS的checkbox group可以用来将复选框组合成一个单一的逻辑字段。由于复选框时不时需要动态的从Store中生成,因而,如果将store绑定到扩展类,就最好不过了。以下是第一次…

25种代码坏味道总结+优化示例

前言什么样的代码是好代码呢?好的代码应该命名规范、可读性强、扩展性强、健壮性......而不好的代码又有哪些典型特征呢?这25种代码坏味道大家要注意啦1. Duplicated Code (重复代码)重复代码就是不同地点,有着相同的程…

滚动照片抽奖软件

CODE GitHub 源码 1、女友说很丑的一个软件 说个最近的事情,女友公司过年了要搞活动,需要个抽奖的环节,当时就问我能不能给做一个,正好我也没啥事儿,就在周末的时候用C#做了一个,虽然派上用场了&#xf…

Java即时类| 带示例的compareTo()方法

即时类compareTo()方法 (Instant Class compareTo() method) compareTo() method is available in java.time package. compareTo()方法在java.time包中可用。 compareTo() method is used to compare this Instant object to the given object. compareTo()方法用于将此Instan…

11个小技巧,玩转Spring!

前言最近有些读者私信我说希望后面多分享spring方面的文章,这样能够在实际工作中派上用场。正好我对spring源码有过一定的研究,并结合我这几年实际的工作经验,把spring中我认为不错的知识点总结一下,希望对您有所帮助。一 如何获取…

MFC中的几种播放声音的方法

一.播放声音文件的简单方法  在VC 中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC中提供的声音播放函 数BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound(…

标志枚举的使用

标志枚举的使用大多是在标记多重状态,比如说文件的属性:只读,可写,隐藏,系统文件等相关属性,都对应相应的标志位,如果在C#中想实现自己的标志枚举,也是可以的,下文是亲身…

duration java_Java Duration类| 带示例的getUnits()方法

duration java持续时间类getUnits()方法 (Duration Class getUnits() method) getUnits() method is available in java.time package. getUnits()方法在java.time包中可用。 getUnits() method is used to get the List object that contains the units of seconds and Nanos …

synchronized 的超多干货!

synchronized 这个关键字的重要性不言而喻,几乎可以说是并发、多线程必须会问到的关键字了。synchronized 会涉及到锁、升级降级操作、锁的撤销、对象头等。所以理解 synchronized 非常重要,本篇文章就带你从 synchronized 的基本用法、再到 synchronize…

团队项目—第二阶段第三天

昨天:快捷键的设置已经实现了 今天:协助成员实现特色功能之一 问题:技术上遇到了困难,特色功能一直没太大的进展。网上相关资料不是那么多,我们无从下手。 有图有真相: 转载于:https://www.cnblogs.com/JJJ…

C# struct 装箱拆箱例子

值类型:拆箱、装箱 struct是值类型 struct和class的区别 类是引用类型,struct是值类型在托管堆上创建类的实例,在栈上创建struct实例类实例的赋值,赋的是引用地址,struct实例的赋值,赋的是值类作为参数类…

stl min函数_std :: min_element()函数以及C ++ STL中的示例

stl min函数C STL std :: min_element()函数 (C STL std::min_element() function) min_element() function is a library function of algorithm header, it is used to find the smallest element from the range, it accepts a container range [start, end] and returns a…

不重启JVM,替换掉已经加载的类,偷天换日?

来源 | 美团技术博客在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话:“Debug一下吧。”“线上机器,没开Debug端口。”“看日…

[nodejs] 利用openshift 撰寫應用喔

2019独角兽企业重金招聘Python工程师标准>>> 朋友某一天告訴我,可以利用openshift來架站,因為他架了幾個nodejs應用放在上面,我也來利用這個平台架看看,似乎因為英文不太行,搞很久啊!! 先來架一個看看,不過架好之後,可以有三個應用,每個應用有1G的空間,用完就沒啦~~…

C#单例模式的简单使用

单例模式示例: public sealed class WindowService {//定义一个私有的静态全局变量来保存该类的唯一实例private static WindowService Service;//定义一个只读静态对象//且这个对象是在程序运行时创建的private static readonly object syncObject new object();…

stl max函数_std :: max_element()函数以及C ++ STL中的示例

stl max函数C STL std :: max_element()函数 (C STL std::max_element() function) max_element() function is a library function of algorithm header, it is used to find the largest element from the range, it accepts a container range [start, end] and returns an…

详解4种经典的限流算法

最近,我们的业务系统引入了Guava的RateLimiter限流组件,它是基于令牌桶算法实现的,而令牌桶是非常经典的限流算法。本文将跟大家一起学习几种经典的限流算法。限流是什么?维基百科的概念如下:In computer networks, rate limiting is used t…