DoEvents的用法.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DoEvents的用法

DoEvents的用法转让控制权,以便让操作系统处理其它的事件。 DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。 DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在 SendKeys 队列中的所有键也都已送出之后,返回控制权。 DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。 小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。 使用 DoEvents 尽管 Timer 事件是后台处理的最好工具,对耗时极多的任务,情况更是如此,但是,DoEvents 函数还是提供了一种取消任务的简便方法。例如,下列代码将显示一个 Process 按钮,单击这个按钮时,它将变成 Cancel 按钮。再次单击按钮又将中断正在执行的任务。 此按钮标题是 Process Private Sub Command1_Click() 过程的所有实例都共享静态变量。 ?? Static blnProcessing As Boolean ?? Dim lngCt As Long ?? Dim intYieldCt As Integer ?? Dim dblDummy As Double ?? 按下按钮时,检测是否在处理 ?? If blnProcessing Then ??? 如果正在处理,则取消 ?????? blnProcessing = False ?? Else ?????? Command1.Caption = Cancel ?????? blnProcessing = True ?????? lngCt = 0 ??? 执行一百万次浮点乘法计算。每一千次后,检测是否要取消。 ?????? Do While blnProcessing And (lngCt 1000000) ???????? For intYieldCt = 1 To 1000 ???????????? lngCt = lngCt + 1 ???????????? dblDummy = lngCt * 3.14159 ???????? Next intYieldCt ?????? DoEvents 语句允许其它事件发生,包括第二次按此按钮。 ???????? DoEvents ?????? Loop ?????? blnProcessing = False ?????? Command1.Caption = Process ?????? MsgBox lngCt multiplications were performed ?? End If End Sub DoEvents 将控制切换到操作环境内核。只要此环境中的所有应用程序都有机会响应待处理事件,应用程序就又恢复控制。这不会使应用程序放弃焦点,但会使后台事件能够得到处理。 这种妥协的结果可能并不总是达到预期目标。例如,下述 Click 事件代码在单击按钮后要一直等候十秒钟,而后才显示一条信息。如果在按钮正在等待期间单击它,则将以相反顺序完成单击操作。 Private Sub Command2_Click() ?? Static intClick As Integer ?? Dim intClickNumber As Integer ?? Dim dblEndTime As Double ?????? 每次单击按钮时 ?????? 赋予唯一数值。 ?? intClick = intClick + 1 ?? intClickNumber = intClick ?????? 等待十秒。 ?? dblEndTime = Timer + 10# ?? Do While dblEndTime Timer ?????? 不做任何事情,仅仅允许 ?????? 其它应用程序处理 ?????? 它们的事件。 ?????? DoEvents ?? Loop ?? MsgBox Click intClickNumber is finished End Sub 对于通过 DoEvents 放弃控制的事件过程,有时可能希望防止在 DoEven

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档