Sub Form_Click()
   Dim CX, CY, Msg, XPos, YPos   ' Declare variables.
   ScaleMode = 3   ' 设置 ScaleMode 为像素。
   DrawWidth = 5   ' 设置 DrawWidth.
   ForeColor = QBColor(4)   ' 设置前景为红色。
   FontSize = 24   ' 设置点的大小。
   CX = ScaleWidth / 2   ' 得到水平中点。
   CY = ScaleHeight / 2   ' 得到垂直中点。
   Cls   ' 清窗体。
   Msg = "Happy New Year!"
   CurrentX = CX - TextWidth(Msg) / 2   ' 水平位置。
   CurrentY = CY - TextHeight(Msg)   ' 垂直位置。
   Print Msg   ' 打印消息。
   Do
      XPos = Rnd * ScaleWidth   ' 得到水平位置。
      YPos = Rnd * ScaleHeight   ' 得到垂直位置。
      PSet (XPos, YPos), QBColor(Rnd * 15)   ' 画五彩碎纸。
      DoEvents   ' 进行
   Loop   ' 其它处理。
End Sub
我看到同学从网上找到的一串代码
运行效果挺好的可是为什么最后那个do循环可以没有 while或until 啊?

解决方案 »

  1.   

    do循环可以没有 while或until ,只要Do...Loop 即可没有 while或until的条件设定, 循环内部得加上条件, 符合条件需要加上 Exit Do 才能跳出循环.你同学那个代码, 如果循环中没有Doevents的话,他必需ctrl+alt+del去中断程序运行了.
      

  2.   

    Doevents函数
    转让控制权,什么意思,在百度百科里查到这句话,没看懂
      

  3.   

    简单的说 在循环过程中, 系统仍然能接收外部的消息与运行其它事件, 你把doevents拿掉 又没有设定条件来退出循环的话 那就相当于 "死机" (无法结束循环的死循环)
      

  4.   

    一个程序 特别是你这种有窗体实例的程序 在运行的时候随时接受到各种信息 触发各种事件 如果没有DOEVENTS 那么你这个FORM_CLICK 事件代码将独占程序的控制权 操作系统无法响应程序的其他事件 造成程序窗体“假死”
      

  5.   

    一个无限循环
    从语法的严谨方面来讲,不推荐这种写法,最好加一个Until