首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • VB制作秒表 [已结贴,结贴人:romantic774]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 16:52:13 楼主
    我用vb制作了一个简单的计时器,所用控件有两个按钮,一个为开始按钮,单击开始运行,再单击暂停;一个文本框用来输出显示;还有一个timer控件
    代码如下:
    然后我想在此基础上增加一些语句,可以使其精确到毫秒,即显示时间格式为“00:00:00.000”请说明实现精确的毫秒的思路即实现(在源代码基础上)谢谢!
    Private Sub Command1_Click()
    If Command1.Caption = "开始" Then
    Command1.Caption = "暂停"
    Timer1.Enabled = True
    ElseIf Command1.Caption = "暂停" Then
    Command1.Caption = "继续"
    Timer1.Enabled = False
    Else
    Command1.Caption = "暂停"
    Timer1.Enabled = True
    End If
    End Sub

    Private Sub Timer1_Timer()
    Dim a, b, c As String
    c = Right(Text1.Text, 2)
    b = Mid(Text1.Text, 4, 2)
    a = Left(Text1.Text, 2)
    c = Trim(Str(Val(c) + 1)): If Val(c) < 10 Then c = "0" & Val(c)
    If Val(c) = 60 Then c = "00": b = Trim(Str(Val(b) + 1)): If Val(b) < 10 Then b = "0" & Val(b)
    If Val(b) = 60 Then b = "00": a = Trim(Str(Val(a) + 1)): If Val(a) < 10 Then a = "0" & Val(a)
    Text1.Text = a & ":" & b & ":" & c
    End Sub
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 17:27:571楼 得分:1
    这样模拟一下就行了吧:
    VBScript code
    Private Sub Command1_Click() Timer1.Enabled = Not Timer1.Enabled Command1.Caption = IIf(Command1.Caption = "暂停", "继续", "暂停") End Sub Private Sub Form_Load() Command1.Caption = "开始" Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Label1.Caption = Format(Now, "HH:MM:SS:") & Right(Timer, 2) End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 18:15:512楼 得分:1
    用 Timer 控件就没法精确到毫秒。

    Timer 最短只能在 55ms 左右触发一次。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 21:20:053楼 得分:1
    timer确实存在计时不精确的问题.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 14:49:074楼 得分:1
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 15:03:395楼 得分:2
    我今天特意写了个程序来验证 Timer控件 的触发周期,发现它最短为 10ms ,计时精度也为 10ms 左右。

    看来真是‘尽信书不如无书’啊。


    楼主想要精度达 1ms ,也不能用 Timer控件 。改用API吧: GetTickCount()
    基本上算是 1ms 的精度。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 18:32:156楼 得分:1
    Timer控件是不能精确到毫秒的,若要更精确,需用其他办法。
    不过,我试过一些方法,好像都不是很理想,显示更新更不理想。
    期待有更好方法。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 17:50:167楼 得分:1
    楼主写的代码怎么这么长呀,好象没有必要写这么长的呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    发表于:2008-05-21 19:03:438楼 得分:1
    参考:

    http://www.m5home.com/bLog/article.asp?id=22
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    发表于:2008-05-21 19:08:319楼 得分:1
    引用 5 楼 Chen8013 的回复:
    我今天特意写了个程序来验证 Timer控件 的触发周期,发现它最短为 10ms ,计时精度也为 10ms 左右。

    看来真是‘尽信书不如无书’啊。


    楼主想要精度达 1ms ,也不能用 Timer控件 。改用API吧: GetTickCount()
    基本上算是 1ms 的精度。



    ///

    其实GetTickCount函数在2000及以后系统里,两次调用分辨率是10MS,9X/ME下是55MS.

    用QueryPerformanceCounter和QueryPerformanceFrequency可以整得比较精确,可不止1MS...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 20:45:5510楼 得分:0
    LZ,按老说的办,理论上可以精确到微秒!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-21 20:46:5511楼 得分:0
    我晕,少打一个字。
    LZ,按9楼老马说的办,理论上可以精确到微秒!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    发表于:2008-05-22 14:31:3112楼 得分:0
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved