如何理解这个VB电子秒表的代码,好的加分100以上,越详细越好

来源:百度知道 编辑:UC知道 时间:2024/05/12 18:00:14
Dim GtcBgn As Long '记录开始记时的时刻 GetTickCount的返回值
Dim SpcCount As Long '记录按了空格
Dim bufDate As String, bufTime As String '字符缓冲

Private Sub Form_Load()
Me.BackColor = vbBlack: Me.ForeColor = vbGreen: Me.FillColor = vbRed
Me.ScaleMode = vbPixels: Me.FillStyle = 0: Me.KeyPreview = True
Me.Caption = "电子秒表": Me.Move 6000, 4500, 2730, 1590: Me.Show
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3 '总在最前
bufDate = "yyyy年mm月dd日 星期六"
bufTime = "00:00:00.000": Timer1.Interval = 50
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Timer1.Interval = 0: Timer1.Enabled = False: End
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeySpace: SpcCount = SpcCount + 1
Case vbKeyEscape: Mid(bufDate, 1) = "yyyy

代码的目的:
是让用户按下空格键开始读秒,再次按下空格键结束读秒,以记录两次按下空格键之间的时间差,精确到毫秒。
读秒结束后,按Esc键清零,并显示当前时间,精确到毫秒。

代码评论:
这段代码书写紧凑有余而易读性略显不足,有些声明不够规范。除这2个微瑕之外,可以说是写得非常不错的。

修改:
代码缺少4个API函数声明,TextOut,lstrlen,SetWindowPos&和GetTickCount,(4个API函数的作用可以到网上或其他地方找点资料看看)。
我做了些修改。在VB中随便加个窗体,加个Timer控件(默认控件名就是Timer1),不要写任何代码,把我下列的代码贴到代码窗口即可运行试试。
----------------------
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal HDC As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function GetTickCount Lib "kernel32" () As Long