VB程序有多个form同时打开,并且没有titleBar
要求-类似MSN messenger:1、程序运行后自动隐藏,
在任务栏右下角的托盘显示图标,鼠标左键或右键点击图标,可以操作显示和隐藏选项;2、根据form1的某个变量修改程序状态,即修改托盘中的图标,像MSN messenger的联机和脱机显示图标切换。
要求-类似MSN messenger:1、程序运行后自动隐藏,
在任务栏右下角的托盘显示图标,鼠标左键或右键点击图标,可以操作显示和隐藏选项;2、根据form1的某个变量修改程序状态,即修改托盘中的图标,像MSN messenger的联机和脱机显示图标切换。
解决方案 »
- 如何先关闭窗体在刷新父级ListView
- 求一个获取注册表项下所有键名的方法!
- VB调用EXCELL进行报表输出,程序发布后在OFFICE97,OFFICEXP,OFFICE2003下都可以,就是OFFICE2000下不行,这是为什么?
- 我使用ttx文件在水晶报表的主报表的报表页脚中添加了两个字报表,打印时这两个两个报表无法连续打印,怎么办?
- VB6的进度条组件该怎么用啊?
- 如何控制輸入相同的資料,急 在線等待
- 请各位大哥哥帮帮小弟,高分相赠~~~~~~~~~~~~~~~~~
- 列表框如何排序?
- VB能否录制line in 输入的信号 用什么方法 急 在线等
- 請教:VB如何實現報表的打印預覽?
- 代码简化和执行效率问题
- 通用对话框打开txt和jpg文件时返回不同值,分别显示在TextBox和Image中
Option Explicit
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As LongPrivate Const MAX_TOOLTIP As Integer = 64
Private Const NIF_ICON = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_TIP = &H4
Private Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONUP = &H205Private 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 TypePrivate Const MF_bitmap = &H4&
Private nfIconData As NOTIFYICONDATAPrivate Sub Sys_Tray()
Dim Mnu_Hwnd As Long
Dim Mnu_Id As Long
Dim i As Long nfIconData.hwnd = Me.hwnd
nfIconData.uID = Me.Icon
nfIconData.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
nfIconData.uCallbackMessage = WM_MOUSEMOVE
nfIconData.hIcon = Me.Icon.Handle
nfIconData.szTip = "Ac's Test Form" & vbNullChar
nfIconData.cbSize = Len(nfIconData)
Call Shell_NotifyIcon(NIM_ADD, nfIconData)
End SubPrivate Sub MDIForm_Load()
Sys_Tray
With Me
.Visible = False
End With
End SubPrivate Sub MDIForm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lMsg As Single
lMsg = X / Screen.TwipsPerPixelX
If lMsg = WM_RBUTTONUP Then
MyTrayMnu.Visible = True
Me.PopupMenu MyTrayMnu
End If
End SubPrivate Sub MDIForm_Unload(Cancel As Integer)
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End SubPrivate Sub mnuA_Click()
With Me
.Visible = Not .Visible
End With
End Sub
这里有源码,你可以看看
尝试过一般的托盘隐藏程序,只能隐藏某一个form,而不能同时隐藏/显示所有的form。向高手求解!