问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样用VB6.0实现将窗体最小化到托盘区49

发布网友 发布时间:2023-09-29 15:35

我来回答

3个回答

热心网友 时间:2023-10-23 12:10

托盘,亦即程序最小化后程序图标隐藏到屏幕右下角的任务栏里。这种最小化方法比普通的最小化节约空间,因此备受欢迎,很多软件都具有这样的功能。在VB中,可用API函数来实现托盘功能,但比较复杂,不太好操作。这里给大家介绍一种非常简单易行的方法:控件法。

COMMON\TOOLS\VB\UNSUPPRT\SYSTRAY

说到控件,大家可能要皱眉头了:去哪找呀?放心!这个控件就躺在你的VB安装盘里!不过,得处理一下:请在Tool文件夹里查找一个名叫Systray的目录,将它拷贝到硬盘,用VB打开该目录下的工程,必要的话可作些改进(如更换图标、添加功能等),然后编译成ocx控件,可以随意命名。为方便使用起见,最好编译到Windows\System目录下。好了,现在我们就可以在我们的程序中使用此控件来轻松实现托盘功能了。添加控件的方法就不用我说了吧?
该控件最主要的属性是InTray属性:设置为True时程序图标出现在任务栏右边,设置为False时从任务栏中清除图标。此外还有图标属性TrayIcon(程序出现在任务时的图标样式)、TrayTip属性(鼠标移到该图标时出现的ToolTip字样)等,都是我们所熟悉的东西,一看就知道。
该控件的重要事件是几个我们常用的鼠标事件:按下、放开、移动、双击,编程时就是利用这些事件达到在任务栏中控制程序的目的。你会发现这也是很简单的,我就不罗嗦了。
下面给个例子。运行此例,点击最小化按钮,程序界面消失,程序图标(确切地说是CsysTray控件的图标)出现在任务栏右边;点击任务栏右边的图标,程序恢复到原状。

'最小化程序到任务栏的右边
Private Sub Form_Resize()
If Me.WindowState = 1 Then '如程序为最小化则——
cSysTray1.InTray = True '隐藏到任务栏
Me.Visible = False '让程序界面不可见
End If
End Sub

'恢复程序到屏幕
Private Sub CsysTray1_MouseDown(Button As Integer, Id As Long)
Me.WindowState = 0 '程序回复到Normal状态
Me.Visible = True '从任务栏中清除图标
cSysTray1.InTray = False '令程序界面可见
End Sub

热心网友 时间:2023-10-23 12:10

忙了我一下午了!弄好了!

1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False

2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Mole1,保存为Mole1.bas

3、在Mole1中写下如下代码:

Option Explicit

Public Const MAX_TOOLTIP As Integer = 64
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206

Public Const SW_RESTORE = 9
Public Const SW_HIDE = 0

Public nfIconData As NOTIFYICONDATA

Public Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * MAX_TOOLTIP
End Type

Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

'4、在Form1的Load事件中写下如下代码:

Private Sub Form_Load()

'以下把程序放入System Tray====================================System Tray Begin
With nfIconData
.hWnd = Me.hWnd
.uID = Me.Icon
.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon.Handle
'定义鼠标移动到托盘上时显示的Tip
.szTip = App.Title + "(版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")" & vbNullChar
.cbSize = Len(nfIconData)
End With
Call Shell_NotifyIcon(NIM_ADD, nfIconData)
'=============================================================System Tray End
Me.Hide
End Sub

'5、在Form1的QueryUnload事件中写入如下代码:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End Sub

'6、在Form1的MouseMove事件中写下如下代码:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lMsg As Single
lMsg = X / Screen.TwipsPerPixelX
Select Case lMsg
Case WM_LBUTTONUP
'MsgBox "请用鼠标右键点击图标!", vbInformation, "实时播音专家"
'单击左键,显示窗体
ShowWindow Me.hWnd, SW_RESTORE
'下面两句的目的是把窗口显示在窗口最顶层
'Me.Show
'Me.SetFocus
'' Case WM_RBUTTONUP
'' PopupMenu MenuTray '如果是在系统Tray图标上点右键,则弹出菜单MenuTray
'' Case WM_MOUSEMOVE
'' Case WM_LBUTTONDOWN
'' Case WM_LBUTTONDBLCLK
'' Case WM_RBUTTONDOWN
'' Case WM_RBUTTONDBLCLK
'' Case Else
End Select
End Sub

7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。单击此图标,Form1就自动弹出来了。

热心网友 时间:2023-10-23 12:11

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
End Type
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const WM_LButtonDown = &H204
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim t As NOTIFYICONDATA
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小米音箱连接苹果电脑mac连接小爱音箱显示连接失败 为什么战地3第一关,在捡了列车门上的那把枪之后,枪就显示不了了??还有... 什么叫石油人民币 微众银行怎么开通微粒贷,贷款额度如何计算? 下列哪一个不是职业道德的特点 A行业性,B特殊性,C明确性,D 时代性 新浪博客可以改名吗? 如何选择适合自己的钓箱 会计不好找工作干什么 ...无处不消魂”是什么意思_出处及原文翻译_学习力 想买吉他不知道怎么选咋办啊? 昵称怎么取好听,昵称怎么取? ...计算机专业留学去杜伦大学,南安普顿大学,约克大学,艾克塞特大学哪所... 计算机专业属于什么类107 血压120,97是不是不正常 问你个题:一个同学考试成绩是用120分制得了97分,如果用百...2 如何一年内强制二次修改?3 上班被一个女人故意找茬,针对。能不能打。不打她又以为你不敢跟...1 廊坊公积金中心电话是多少?怎样提取公积金,公积金购房怎么操作?如何... (97+120+125+89+123+100+114)=? 我脸上有些黑痣。 不知道怎么去掉。 我现在14岁了。 如果去... 衣服出现静电,为什么用电池擦一下就好了? 父亲姓杨,母亲姓万,于阴历2012年2月20日凌晨5时出生,五行缺木,望大师取... 深圳中考时间2024年时间表 大学生寒假社会实践应该做些什么5 寒暑假社会实践活动可以做什么事58 人有时候就是贱,有的人拐弯抹角笑话别人,人家不跟她一般见识,...3 照片宽高97:120照片大小不超过20k,怎么拍? 怎么关注国外的ins 如何一年改两次你好我想在一年内修改第二次的 因为... 一年内怎么修改第二次? 我脸上长了一颗黑痣,现在14岁了,请问我现在可以去医院把痣去... 计算机专业算什么专业类别?64 计算机科学与技术是什么专业科类别24 计算机科学与技术属于什么大类38 一米九五标准体重 计算机科学与技术专业类别是什么啊?属于什么大类?9 计算机类专业包括哪些专业?1 用电池的哪一级可以去除衣服产生的静电?1 怎样用干电池去除衣物静电48 身上的静电用干电池的哪一端摩擦可以去除?原理是什么?95 衣服上有静电用电池哪一极擦一下就没事了 为什么出门时在包里带一节干电池就可以防止裙子带静电?1 电池正极除静电吗,那我衣服包里放着电池就没静电了?17 干电池除衣服静电,应该使用哪一极?2 怎么在手机上进行电脑端绑定? 一个可以登录两个电脑吗? 手机和电脑使用同一个,聊天记录能够同步吗? 在电脑上用别人的手机可以吗? 寒假的社会实践有什么好干的,一个或者两个人. 寒假社会实践做什么