最小化托盘问题

蔡志远
博客专家认证
2008-12-21 01:06:39
我用VB做一个东西,但是最小化托盘不知道怎么回事 不起作用

我是要点击一个图片就最小化到托盘

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

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


是用cSysTray控件做的,FORM的BorderStyle是0
...全文
128 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbwhwc 2008-12-21
  • 打赏
  • 举报
回复
友情up
qap22 2008-12-21
  • 打赏
  • 举报
回复
友情up
klj123 2008-12-21
  • 打赏
  • 举报
回复
Private Sub Exit_Click()
End
End Sub
lc19890326 2008-12-21
  • 打赏
  • 举报
回复
游民居然有空学VB了?帮顶
SYSSZ 2008-12-21
  • 打赏
  • 举报
回复
“退出”用End 结束程序就行了
蔡志远 2008-12-21
  • 打赏
  • 举报
回复
补充一下问题,最小托盘知道怎么做了,但是现在最小托盘上的“退出”不能完全退出程序,只能清除状态栏中的托盘图标。

代码是这样写的

主窗口:

Private Sub CsysTray1_MouseDblClick(Button As Integer, Id As Long)
If Button = 1 Then

Me.WindowState = 0 '程序回复到Normal状态
Me.Visible = True '从任务栏中清除图标
cSysTray1.InTray = False '令程序界面可见
End If
End Sub

Private Sub Button1_Click(Index As Integer)
Select Case Index
Case 3 '最小化到任务栏
cSysTray1.InTray = True '隐藏到任务栏
Me.Visible = False '让程序界面不可见
Case 4 ' 最小化窗体
Me.WindowState = vbMinimized
Case 5 '关闭播放器
Unload Me
End Select
End Sub


菜单窗口

Private Sub YingCang_Click() '最小化 到状态栏
Yingcang.Checked = Not (Yingcang.Checked)
If Yingcang.Checked Then
Mian.cSysTray1.InTray = True '隐藏到任务栏
Mian.Visible = False '让程序界面不可见
Else
Mian.WindowState = 0 '程序回复到Normal状态
Mian.Visible = True '从任务栏中清除图标
Mian.cSysTray1.InTray = False '令程序界面可见
End If
End Sub


Private Sub Exit_Click()
Unload Mian
End Sub

Private Sub Form_Load()

End Sub
嗷嗷叫的老马 2008-12-21
  • 打赏
  • 举报
回复
有多个窗体时要注意都卸载掉.

建议专门写一个类似下面的卸载过程在一个标准模块内:

'以下代码保存为ModQuit.bas:
Option Explicit
'*************************************************************************
'**模 块 名:ModQuit
'**说 明:退出程序时自动卸载所有窗口
'**创 建 人:嗷嗷叫的老马
'**日 期:2003年10月26日
'*************************************************************************

Public Sub Quit()
Dim X As Form
For Each X In Forms
Unload X
Next
End Sub

主窗体退出时调用一下这个过程,即可把已经载入的窗体都卸载.

另外就是,托盘使用代码也比较简单,个人认为没必要使用控件....你可以参考一下这个类模块:

http://www.m5home.com/blog2/blogview.asp?logID=217&cateID=2
goosen 2008-12-21
  • 打赏
  • 举报
回复
Private Sub Image1_Click()       '最小化到盘托
tray.cbSize = Len(tray)
tray.uId = vbNull
tray.hWnd = Me.hWnd
tray.uFlags = NIF_TIP Or NIF_MESSAGE Or NIF_ICON
tray.uCallBackMessage = WM_MOUSEMOVE
tray.hIcon = Me.Icon
tray.szTip = "最小化图标--7℃" & vbNullChar
Shell_NotifyIcon NIM_ADD, tray
Me.Hide
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
msg = X / 15
If msg = WM_LBUTTONDBLCLK Then
Me.Show
Shell_NotifyIcon NIM_DELETE, tray
End If


End sub
Private Sub Exit_Click() '退出程序
End
End Sub




1,451

社区成员

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

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