比如说,我们在表单上设置了一个计时器控件,这个定时器的任务就是在表单上显示当前的时间,同时设置当程序运行时启动定时器。程序运行后,当前的时间将在表单上实时地显示出来。但如果我们同时设置一个command按钮,并设计它的click事件为调用msgbox显示一个随意的信息。当我们点击这个按钮后,就会出现一个对话框,这时,请留心看看原本显示当前事件的那个位置,你发现了什么?呵呵,时间不再更新显示了 ;-( 当再次点击对话框的按钮,使之消失时,时间又恢复正常,继续实时显示了。
问题已经描述清楚了。我们将要解决的就是,当出现对话框时,让时间仍能正确地实时显示,也就是说,让程序在后台继续运行。
使用API函数MessageBox
使用VB自带的函数MSGBOX是完成不了我们期望的后台程序运行了,在上面我们已经谈到。为了解决这个问题,这里提供一个简单并且很好用的技巧:使用Windows API函数MessageBox。它产生的效果及外观与使用MSGBOX基本一样,但却不会中止后台程序的继续运行。
引用MessageBox
为了使用这个函数,必须首先在代码的最前端设置引用信息,请输入以下的代码:
Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
例程代码
接着,在表单上添加1个定时器控件,2个按钮控件,1个label控件。定时器控件控制显示当前时间,一个命令按钮调用MSGBOX对话框,另一个命令按钮调用MessageBox函数,Label存放当前时间。你可以通过点击不同的命令按钮,查看label中显示的时间是否有停止的现象。
代码如下:
Private Sub Command1_Click()
MsgBox "请看看时间显示是否停止了!"
End Sub
Private Sub Command2_Click()
MessageBox Me.hwnd, "请注意,时间显示没有停止!", "API Call", _ vbOKOnly + vbExclamation
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Time
End Sub
更多的设想
上面的代码是否很简单? 的确这样,使用API函数,有时能启动意想不到但却是很实用的效果。当然,你也可以编写自己的对话框函数,这也不是很复杂,而且能更加细微地控制用户的输入。
-
vb教程之VB让程序在后台运行
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程