doevents()函数?

lsy19820602 2002-12-17 09:31:46
RT,这个函数在程序中起到什么样的作用呢?
...全文
56 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
footballboy 2002-12-21
  • 打赏
  • 举报
回复
转贴
本文为Bardo原作,版权为东方热讯所有!(www.easthot.net)
我们常常用此函数来放弃控制权给系统。以使界面能够有响应。
而这一做法需要注意的最重要的两点是什么,绝大多数人都不是很清楚。
这两点是:
1、
在顺序触发的事件中,只能在一个事件中加上DoEvents,这种做法是在要求从下一个事件中获得数据是时很有用。而不需要通过处理消息或用其它API函数来实现这一功能。
但是在这种使用中一个对象最多只能在一个事件中加此函数,否则很可能会造成溢出。
2、
在耗时很长的函数中使用,放弃控制权给系统。以使界面能够有响应。
在这种使用中需要注意的是:最好不要在有ByRefrence方式传参的子过程或函数中使用。否则会出现意想不到的错误。原因在于当系统调用函数时正确传入了参数,而放弃控制权后,很可能参数被外部修改。

另一种使用则是用此函数检则程序当前打开窗体的个数。
如以下代码:
iFrmCount=Devents
你可以试一试。看看对不对?




superguang 2002-12-21
  • 打赏
  • 举报
回复
被人家说去了 :(
zdleek 2002-12-21
  • 打赏
  • 举报
回复
up
griefforyou 2002-12-21
  • 打赏
  • 举报
回复
来晚了
lsy19820602 2002-12-21
  • 打赏
  • 举报
回复
up
tinafang 2002-12-21
  • 打赏
  • 举报
回复
挂起当前的进程,把cpu控制权让给别的进程
ganzhiruogy 2002-12-17
  • 打赏
  • 举报
回复
例子:
Dim blnStop As Boolean

Private Sub CmdStop_Click()
blnStop = True
End Sub

Private Sub CmdStart_Click()
Dim I As Long
Dim J As Integer
Label1.Caption = "计算开始......"
Me.MousePointer = 11
blnStop = False
I = 100000
J = 2
Do While (I < 900000)
I = I + 1
If I = 10000 * J Then
Label1.Caption = "已经计算到" & I
J = J + 1
End If

'code............

DoEvents
If blnStop = True Then
Label1.Caption = "计算被停止!"
FileTxt.Close
Me.MousePointer = 0
Exit Sub
End If
Loop
Me.MousePointer = 0
End Sub
ganzhiruogy 2002-12-17
  • 打赏
  • 举报
回复
DoEvents 函数


转让控制权,以便让操作系统处理其它的事件。

语法

DoEvents( )

说明

DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。

DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在 SendKeys 队列中的所有键也都已送出之后,返回控制权。

DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。

小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧