问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

vb6.0 如何做任务栏进度条?望大神指教,谢谢。

提问网友 发布时间:2024-10-06 12:24
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
3个回答
热心网友 回答时间:2024-10-12 19:34
在VB6(VisualBasic6.0)中,没有内置的进度条控件,但你可以使用Label控件结合Timer控件来模拟一个进度条。以下是一个简单的示例代码,展示如何使用Label控件来制作一个进度条:

在Form上添加两个Label控件(Label1和Label2)和一个Timer控件(Timer1)。
在Form的Load事件中,初始化进度条并启动Timer控件。例如:

Private Sub Form_Load()
ProgressBarWidth = 0
Timer1.Enabled = True
End Sub
在Timer1的Timer事件中,每秒更新进度条。例如:

Private Sub Timer1_Timer()
ProgressBarWidth = ProgressBarWidth + 10
If ProgressBarWidth > Label1.Width Then
ProgressBarWidth = Label1.Width
Timer1.Enabled = False
End If
Label1.Width = ProgressBarWidth
End Sub
创建一个变量(如ProgressBarWidth)来存储进度条的宽度,并在每次Timer事件触发时增加其值,直到达到Label1的宽度为止。当进度条完成时,禁用Timer控件。
请注意,这只是一个简单的示例,你可以根据需要调整进度条的速度、宽度和样式。另外,为了更好地模拟进度条效果,你可能还需要在Label1的背景色或前景色上做一些调整1。
热心网友 回答时间:2024-10-12 19:29
Option Explicit

' 引用 Windows API 函数
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

' 定义任务栏图标相关的结构体
Private Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
dwState As Long
dwStateMask As Long
szInfo As String * 256
uVersion As Long
szInfoTitle As String * 64
dwInfoFlags As Long
End Type

' 常量定义
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const NIF_INFO = &H10

' 全局变量
Private NotifyIconData As NOTIFYICONDATA

Private Sub Form_Load()
'始化任务栏图标数据
With NotifyIconData
.cbSize = Len(NotifyIconData)
.hwnd = Me.hWnd
.uID = 1
.uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon
.szTip = "任务栏进度条示例"
End With
'加任务栏图标
Shell_NotifyIcon NIM_ADD, NotifyIconData
End Sub

Private Sub Form_Unload(Cancel As Integer)
'除任务栏图标
Shell_NotifyIcon NIM_DELETE, NotifyIconData
End Sub

Private Sub Timer1_Timer()
Dim progress As Integer
progress = progress + 10 '拟进度增加
If progress > 100 Then progress = 0 '度满后重置

'新任务栏图标提示信息显示进度
With NotifyIconData
.szInfo = "进度: " & progress & "%"
.dwInfoFlags = 0
.szInfoTitle = "任务进度"
Shell_NotifyIcon NIM_MODIFY, NotifyIconData
End With
End Sub

' 处理鼠标移动消息
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
msg = X / Screen.TwipsPerPixelX
Select Case msg
Case WM_LBUTTONDOWN '标左键单击
MsgBox "您单击了任务栏图标"
Case WM_RBUTTONDOWN '标右键单击
PopupMenu mnuPopup '出右键菜单
End Select
End Sub

' 定义菜单
Private Sub mnuExit_Click()
Unload Me
End Sub
热心网友 回答时间:2024-10-12 19:34
1. 导入必要的库:
• Shell32.dll:用于Shell_NotifyIcon函数。
• Oleacc.dll:用于COM接口。
2. 声明ITaskbarList3接口: 你需要使用CreateObject来创建TaskbarList对象并将其转换为ITaskbarList3接口。
3. 调用HrInit方法: 初始化ITaskbarList3接口。
4. 调用SetProgressValue和SetProgressState方法: 更新进度条的值和状态。
下面是VB6中实现这一功能的代码片段示例:
' 导入必要的库
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
' 定义NOTIFYICONDATA结构体
Private Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 128
dwState As Long
dwStateMask As Long
szInfo As String * 256
uTimeout As Long
szInfoTitle As String * 64
dwInfoFlags As Long
guidItem As GUID
End Type
' GUID结构体定义
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4 As Byte * 8
End Type
' 创建TaskbarList对象
Dim m_oTaskBarList As Object
Set m_oTaskBarList = CreateObject("Shell.TaskbarList")
' 初始化TaskbarList对象
m_oTaskBarList.HrInit
' 更新任务栏进度条
Sub UpdateTaskbarProgress(value As Long, max As Long)
m_oTaskBarList.SetProgressValue Me.hWnd, value, max
m_oTaskBarList.SetProgressState Me.hWnd, TBPF_NORMAL
End Sub

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

VB 加载进度条 慢性酒精中毒临床症状 酒精中毒对身体的具体影响有哪些? 酒精中毒会产生后遗症吗 慢性酒精中毒晚期有哪些症状 为什么喜欢掐女生的脖子? 大连小众孩子好玩儿的地方 ...在外面有外遇,一气之下,用手卡女友的脖子,导致女友自吸死亡应该怎 ... ...我就掐住了她的脖子,把她掐哭了。现在怎么办,还有缓和的机会吗?_百 ... 因为气头上,掐了一下女友的脖子!因为这事她恨死我了!搞得最后分手了!我... 我想掐女孩的脖子不知道谁能让我掐 ...烟台大学 青岛农业大学 济南大学 青岛理工大学 青岛科技大学 山东... 鲁东大学和烟台大学哪个更好一点啊? 萤火虫通常在晚上什么时间段最活跃? 中国民办大学有几所 中国哪些民办二本大学的最低分低于三本? 荣耀60se开发者模式怎么关闭 高考可以开车送孩子吗? ...可以在考场门口为家长送水吗? 汽车可以进入考场校门口的区域吗?_百 ... 2023年高考期间私家车能否进入考场送考? 【资讯】Kindle终于可以自定义屏保了!看看你的设备支持不? 寒食节摆放在墓碑上面的食物有没有什么讲究 李商隐诗句无端 以前我是qq号 手机号都可以登陆微信的 解绑了QQ号。现在绑定不... QQ是是用手机注册的,不小心绑定了QQ安全中心,还没解绑,里面有一个Q ... 我的手机号不用好久了,但绑定qq号了,无法解绑,是否可以联系腾讯解绑 c盘驱动器损坏如何修复 2023年1月谢年选吉日 2023年1月谢年最佳日期一览表 包子肉馅搅拌次数多了会不会不能抱成团? 请问一下,我家有一个2100瓦的电磁炉打开烧热水时一分钟电表跳了106下... 从上饶到铜陵怎么乘车的,请知道怎么去动告知下吧。谢谢 从上饶到安徽铜陵应该怎么走啊?? 请问从江西上饶怎么坐车到安徽铜陵? 铜陵有到上饶的直达车吗 买了9号上饶到铜陵的动车能上车吗? 怎样把摄像机录在磁带的内容存入在本本里 干部决定一切作者简介 北京方亚盛博科技有限公司怎么样? 经常心绞痛会导致什么拜托了各位 谢谢 青少年可能有心绞痛吗?拜托各位了 3Q
Top