如何让多个程序快同时执行?

半点闲 2003-05-06 01:34:44
在一个窗体中如何同时的进行多个程序块同时执行。。

如当用户点击了窗体中的‘拔号’按钮后,拔号程序在后台执行。于此同时前台在窗体中显示正在进行拔号连接的动画与提示。。(就如同出现‘拔号连接’时的样子)

我编写的程序同一时间内只能执行一种操作,如点击了'拔号'系统的控制权都集中在拔号程序模快中。此时无法显示执行时的动画与基它的操作(如此时用户想终止拔号连接)。。
用了DoEvents也没有用。
...全文
87 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
weill 2003-05-07
  • 打赏
  • 举报
回复
其实VB的多任务同时能力是很弱的!小心使用。
weill 2003-05-07
  • 打赏
  • 举报
回复
转让控制权,以便让操作系统处理其它的事件。

语法

DoEvents( )

说明

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

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

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

小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。
半点闲 2003-05-07
  • 打赏
  • 举报
回复
谢谢这是我的邮箱~b_dx@sohu.com
HanZhu1 2003-05-06
  • 打赏
  • 举报
回复
time比较好
rainstormmaster 2003-05-06
  • 打赏
  • 举报
回复
尽量少用doevents,否则可能引发不可预料的错误
lanWay 2003-05-06
  • 打赏
  • 举报
回复
sub a()
do while not i=0
doevents '注意doevents的用法
i=i+1
loop
end sub

sub b()
do while not i=0
doevents '注意doevents的用法
i=i+1
loop
end sub
蒋宏伟 2003-05-06
  • 打赏
  • 举报
回复
有邮箱没有发一个给你,绝对多线程上面那个是假多线程
weill 2003-05-06
  • 打赏
  • 举报
回复
给你一个例子我自个没事做得玩的。
http://www.yesue.com/attach/file/Q_PC_General/18897/AA.zip
weill 2003-05-06
  • 打赏
  • 举报
回复
用timer控件,先起动timer,再持行别的,持行完后停了timer。
明白了吗?:)
半点闲 2003-05-06
  • 打赏
  • 举报
回复
谢谢楼上的兄弟~~~

那里能找到比较完整的'多线程'程序源码?想学习学习。
lihonggen0 2003-05-06
  • 打赏
  • 举报
回复

在VB6.0中播放GIF动画
摘 要: 由 于GIF 格 式 动 画 文 件 具 有 小 巧、 制作 方 便 等 特 点,因 此 在 网 上 得 到 广 泛 应 用,但 遗 憾 的 是VB 中 的 多 媒 体 控 件 却 无 法 播 放 它, 这 给 我 们 设 计VB 应 用 程 序 带 来 了 不 便。 在此 我 们 向 大 写 介 绍 一 种 利 用 网 络 浏 览 器IE 实现 在VB 中 播 放GIF 动 画 的 方 法。 并 给 出 一 个 简捷、 实 用 的“ 画 中 画” 滚 动 显 示 程 序。

---- GIF 动 画 格 式 文 件 是 一 种 动 态 存 储 的 图 形格 式 文 件。 在 内 容 相 同 的 条 件 下, 与 其 它 格式 文 件 相 比, 由 于 它 占 用 的 存 储 空 间 少, 且制 作 手 段 成 熟, 可 浏 览 的 软 件 工 具 也 很 多,所 以 倍 受 设 计 者 的 青 睐。 然 而 令 人 遗 憾 的 是, 在Visual Basic 中, 无 论 是 多 媒 体 控 件MCI、MCIWnd, 还 是Animation 控 件, 甚 至 调 用
Windows API 函数 都 无 法 播 放GIF 格 式 的 动 画 文 件。 造 成 这 一现 象 的 原 因 在 于GIF 动 画 格 式 文 件 不 是VB 多 媒体 控 件 所 支 持 的 视 频 格 式 文 件(VB 多 媒 体 控件 所 支 持 的 视 频 格 式 文 件 主 要 有:AVI 格 式、MOV 格 式、FLI 格 式、FLC 格 式 等)。 以 往 我 们 的 解决 方 法 是: 首 先 利 用 一 些 格 式 转 换 工 具, 比如GIF Movie Gear 将GIF 格
式 的 动 画 文 件 转 换 为AVI格 式 的 动 画 文 件, 然 后 再 用 多 媒 体 控 件MCI和MCIWnd 进 行 播 放。 但 这 种 做 法 主 要 存 在 以 下两 个 缺 陷:

---- 1 . 所 形 成 的AVI 格 式 动 画 文 件 太 大( 常 常是GIF 格 式 文 件的 几 十 倍), 从 而 影 响 系 统 的效 率。

---- 2 . 所 形 成 的AVI 格 式 动 画 文 件 往 往 带 有比 较 复 杂 的 调 色 板 信 息, 所 以 当 程 序 在 播 放这 种AVI 格 式 动 画 文 件 时, 如 果 还 兼 有 动 态 显示 的 文 字 和 图 象 信 息, 则 整 个 画 面 就 会 产 生抖 动 和 闪 烁, 从 而 使 显 示 效 果 大 受 影 响。

---- 为 解 决 这 个 问 题, 我 们 在 此 提 出 一 个 全新 的 处 理 方 案 : 通 过 在VB 中 调 用IE 浏 览器 来 实 现GIF 动 画 的 播 放, 实 际 使 用 表 明: 效果 甚 好。

---- 一、 浏 览 器IE 和WebBrowser 控 件

---- 众 所 周 知, 运 行VB6.0 需 要 安 装 浏 览 器IE4.0或 以 上 版 本, 当IE4.0 和VB6.0 安 装 完 成 后, 我 们便 可 以 在VB6.0 中 使 用IE 所 提 供 的WebBrowser 控 件播 放GIF 动 画 了。 具 体 方 法 如 下:

---- 1 . 由 于WebBrowser 控 件 并 不 是VB 的 基 本 控件, 因 此 在 使 用 该 控 件 之 前 必 须 先 将 其 装 入工 具 箱 中。 装 入 方 法: 在 工 具 箱 中 点 击 鼠 标右 键 → 选 中“ 部 件” → 复 选Microsoft InternetControls → 然 后 点 击“ 确 定” 键 即 可。

---- 2 . 选 取WebBrowser 控 件( 注 意 不 同 版 本IE的WebBrowser 控 件 的 图 标 是 不 同 的,IE4.0 中的WebBrowser 控 件 的 图 标 是 一 个 地 球;IE3.0 是 一个 搜 索 图 标。), 添 加 到 窗 体 的 相 应 位 置 上。

---- 3 . 设 计 相 应 代 码, 通 过 使 用WebBrowser 控件 的Navigate 方 法 播 放GIF 动 画 文 件。

---- Navigate 方 法 的 语 法 格 式 为:

WebBrowser 控 件 名.Navigate URL [Flags,][TargetFrameName,][PostData,][Headers]

---- WebBrowser 控 件 支 持 的 主 要 方 法 有:

GoBack — — — 回 退 到 上 一 屏。
GoForward — — — 进 入 到 下 一 屏。
GoHome — — — 回 家。 即 回 到 主 页。
Stop — — — 停 止 导 航。
Refresh — — — 刷 新。
Navigate — — — 导 航。

---- WebBrowser 控 件 所 响 应 的 事 件:

---- BeforeNavigate 事 件 — — — 在 开 始 导 航 前 发 生。 一 般 在 此 获 取 完 整 的URL 字 符 串。

---- WebBrowser 控 件 最 主 要 的 参 数:

---- URL — — — 获 得 导 航 用 的 标 准URL 字 符 串。例 如: 它 能 将”www.MicroSoft.Com” 自 动 翻 译 为” http:// www.MicroSoft.Com”.URL 是Uniform Resource Locator 的 缩 写, 是 在Internet 的WWW 服 务 程 序 上 用 于 指 定 信 息 位 置 的 表 示 方 法。

---- 下 面 我 们 结 合 一 个 实 例 进 行 具 体 说 明。这 是 一 个“ 画 中 画” 滚 动 显 示 应 用 程 序, 界 面 由 循 环 滚 动 显 示 的 文 字、 背 景 图 象、 和 播 放 的GIF 动 画 三 部 分 组 成。 其 中 循 环 显 示 的 文 字 用 透 明 的Label 控 件 实 现; 动 画 用WebBrowser 控 件 实 现 播 放。

---- ① 所 需 控 件:

---- 本 程 序 需 要 一 个PictureBox 控 件、 一 个Label 控 件、 一 个WebBrowser 控 件、 一 个Timer 控 件。

---- ② 各 控 件 的 属 性 设 置 如 下:

控件名称 属性 设置值 含 义
Label1控件 BackStyle 0 设置Label1控件的背景是透明的。
Timer1控件 Interval 200 设置每0.2秒发生一次Timer1_Timer()事件。

---- ③ 各 事 件 的 相 应 代 码 如 下:

首 先 定 义 一 个 变 量, 以 便 用 它 来 存 放 需 要 滚 动 显 示 的 字 符 串。

Dim aa As String

在Form_Load() 事 件 中 进 行 初 始 化 工 作, 具 体 代 码 如 下:

Private Sub Form_Load()
Picture1.Picture = LoadPicture(App.Path & "\demo1.jpg")
WebBrowser1.Navigate (App.Path & "\new1.gif")

---- aa = " 这 是 一 个 利 用 网 络 浏 览 器IE 中WebBrowser 控 件 制 作 的GIF 动 画 播 放 程 序。 "

Label1.ForeColor = QBColor(11)
Label1.FontSize = 18
Label1.Caption = aa
End Sub

◆ 在Timer1_Timer()事件中,每隔0.2秒改变
一次Label1控件的Caption属性值。
Private Sub Timer1_Timer()
` 让字符串头尾相接,以便形成滚动效果。
aa = Mid(aa, 2, 59) + Mid(aa, 1)
Label1.Caption = aa
End Sub
◆ 在Picture1_Click()事件中,卸载并退出应用程序。
Private Sub Picture1_Click()
Unload Me
End Sub

---- ④ 调 整 各 控 件 至 适 当 的 大 小 和 位 置。

---- 二、 注 意 事 项 及 附 加 说 明

---- 1 . 不 同 版 本IE 的Microsoft Internet Controls 所 包 含 的 控 件 及 控 件 数 量 是 不 同 的。 设 计 者 在 使 用 时 必 须 注 意 这 一 点。

---- ① WINDOWS95 所 带 的IE3.0 的Microsoft Internet Controls 只 包 含 一 个 控 件, 即WebBrowser 控 件。

---- ② 中 文 版IE4.0CN 的Microsoft Internet Controls 包 含 两 个 控 件, 即WebBrowser 控 件 和DownUp 控 件。

---- ③ 英 文 版IE4.01 的Microsoft Internet Controls 包含 两 个 控 件, 即WebBrowser 控 件 和ShellFolderViewOC控 件。

---- 2 . 实 际 上, 在VB5.0 中 也 可 以 使 用WebBrowser控 件 播 放GIF 动 画, 但 如 果VB5.0 是 安 装在WINDOWS95 下, 那 么 必 须 安 装IE3.0 或IE4.0; 如 果是 安 装 在WINDOWS98 下, 则 可 不 必( 因 为WINDOWS98自 带IE4.0)。 然 而 需 要 特 别 声 明 的 是: 无 论 是VB5.0 的 联 机 手 册, 还 是 其 它 帮 助 文 件, 均 未介 绍 有 关WebBrowser 控 件 的 资 料( 因 为WebBrowser控 件 不 是Visual Basic 的 控 件, 而 是 由IE 提 供 的。)。 读 者 如 要 详 细 了 解 这 方 面 的 情 况, 请 查阅Visual Studio 98 中 的MSDN。 具 体 步 骤 如 下:

---- 从Microsoft Developer Network 中 选 择MSDN LibraryVisual Studio 6.0, 查 找 关 于Reusing the WebBrowserControl 的 主 题, 位 置 在Internet Explorer:PlatfromSDK。 从 哪 可 以 找 到 有 关WebBrowser 控 件 的 详 尽资 料。

---- 3 . 注 意 你 的 发 布 权 限。 由 于 受 到 软 件 知识 产 权 的 影 响, 任 何 软 件 都 有 它 的 发 行 权 限。 在Visual Basic 中, 你 可 以 自 由 地 发 布 任 何由Visual Basic 创 建 的 应 用 程 序、 部 件、DLL、Active X 控 件、 各 种 媒 体 文 件、 示 例 应 用 程 序 在\Samples 子 目 录 下) 以 及 系 统 第 一 次 安 装Visual Basic 时 最 初 复 制 到Visual Basic 主 目 录的\Icons 子 目 录、\Graphics 子 目 录、\ODBC 子 目 录下 的 任 何 文 件。 但 除 此 之 外 的 其 它 软 件 一 般都 不 允 许 你 发 布。 例 如: 你 的 应 用 程 序 中 包含 有 对 网 络 浏 览 器IE 的 引 用, 那 么“ 应 用 程 序 安 装 向 导” 在 创 建 你
的 安 装 程 序 时, 就 会 因试 图 发 布 无 权 发 布 的 软 件 而 出 错。

---- 错 误 原 因: 因 为 我 们 无 权 用Visual Basic 的“应 用 程 序 安 装 向 导” 来 发 布 网 络 浏 览 器IE。

---- 那 么 既 然 我 们 不 能 在VB 的 应 用 程 序 中 发布 网 络 浏 览 器IE, 又 怎 么 样 保 证 应 用 程 序 中的 引 用 能 得 以 实 现 呢 ?

---- 解 决 办 法 ①: 如 果 用 户 的 计 算 机 上 已 经安 装 了 网 络 浏 览 器IE, 那 么 直 接 安 装 你 开 发的 应 用 程 序 即 可。

---- 解 决 办 法 ②: 如 果 用 户 的 计 算 机 上 还 未安 装 网 络 浏 览 器IE, 那 么 只 要 在 运 行 你 的 应用 程 序 之 前, 安 装 上 网 络 浏 览 器IE 即 可。

---- 需 要 说 明 的 是, 上 述 解 决 方 法 具 有 普 遍性, 如 果 你 的 应 用 程 序 在 发 布 时 遇 到 类 似 的问 题( 例 如: 你 的 应 用 程 序 中 包 含 有 对Word97、Excel 97 的 引 用), 均 可 照 此 处 理。
lihonggen0 2003-05-06
  • 打赏
  • 举报
回复

用VB播放FLASH动画
Flash是一种矢量格式的动画文件, 可以包含动画,声音,超文本链接,而文件的体积却很小。在网页上使用Flash可以作出很漂亮的全屏动画和动态菜单条。
  你想在VB程序里作出类似的效果吗?在VB中使用Flash4自带的Swflash.ocx控件就可以了。方法如下:
  首先,打开VB5,新建一个工程, 在工具箱上单击右键,选择部件,在部件窗口的控件列表中选择Shockwave flash,然后确定,Flash控件就被加到工具箱上。
  然后将Flash控件放到窗体上,并调整至适当的大小,然后在属性窗口里设置movie属性为Flash动画文件的路径(如:c:\demo.swf),设置scale model属性为2,quality 属性为 1。(参见附表)
  双击窗体,在form_load( )过程里加入:
  shockwaveflash1.playing=true
  按F5就可以看到播放的Flash动画了。(注意:编译以后的可执行文件不包含动画文件)如果动画里加上动态按钮,配合鼠标位置判断,就可以作成动态工具条或动态菜单了。
lihonggen0 2003-05-06
  • 打赏
  • 举报
回复

如果要做多线程,你还是放弃吧!

你可以显示一个动画(gif或flash)吧,拔号成功,加载另一个动画
半点闲 2003-05-06
  • 打赏
  • 举报
回复
如果是我的思路有问题,也请提点~~

7,763

社区成员

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

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