在VB中如何将窗口最小化到状态栏使其效果与金山词霸一样
要使用的时候双击一下可恢复到原来的窗口大小
要使用的时候双击一下可恢复到原来的窗口大小
解决方案 »
- 在VB6.0中如何设置动态菜单,如何用动态菜单实现像IE浏览器的收藏夹功能
- 一个非常不错的VB教程下载网站
- 物料分级,要求根据选择的级次显示明细数据和汇总数据,在线等
- 请教: 关于自定义outlook中form的问题!! (在线等待)
- 如何用VB将字符[']插入到[Access]表中 ?
- 新手问简单问题
- 请问如何验证w2000用户名和密码.logonuser好像不行.
- 非常实用的图形操作——怎样在一图片上的特定位置透明的画上另一幅较小的图片,要求运算在内存中进行?
- 在哪里可以找到16x16大小的icon?
- 怎样改变mshflexgrid每一条记录的背景颜色。
- 如何把一张JPG的图存到对应的字段里去,请教!请回答一下!
- 一个小问题
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_RESTORE = &HF120&
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Private LastState As Integer '保留原窗口状态
'---------- dwMessage可以是以下NIM_ADD、NIM_DELETE、NIM_MODIFY 标识符之一----------
Private Const NIM_ADD = &H0 '在任务栏中增加一个图标
Private Const NIM_DELETE = &H2 '删除任务栏中的一个图标
Private Const NIM_MODIFY = &H1 '修改任务栏中个图标信息Private Const NIF_MESSAGE = &H1 'NOTIFYICONDATA结构中uFlags的控制信息
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const WM_MOUSEMOVE = &H200 '当鼠标指针移至图标上
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONUP = &H205
Private Type NOTIFYICONDATA
cbSize As Long '该数据结构的大小
hwnd As Long '处理任务栏中图标的窗口句柄
uID As Long '定义的任务栏中图标的标识
uFlags As Long '任务栏图标功能控制,可以是以下值的组合(一般全包括)
'NIF_MESSAGE 表示发送控制消息;
'NIF_ICON表示显示控制栏中的图标;
'NIF_TIP表示任务栏中的图标有动态提示。
uCallbackMessage As Long '任务栏图标通过它与用户程序交换消息,处理该消息的窗口由hWnd决定
hIcon As Long '任务栏中的图标的控制句柄
szTip As String * 64 '图标的提示信息
End TypeDim myData As NOTIFYICONDATAPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case CLng(X)
Case WM_RBUTTONUP '鼠标在图标上右击时弹出菜单
Me.PopupMenu mnuTray
Case WM_LBUTTONUP '鼠标在图标上左击时窗口若最小化则恢复窗口位置
If Me.WindowState = vbMinimized Then
Me.WindowState = LastState
Me.SetFocus
End If
End Select
End SubPrivate Sub Form_Unload(Cancel As Integer)
Shell_NotifyIcon NIM_DELETE, myData '窗口卸载时,将状态栏中的图标一同卸载
End SubPrivate Sub mnuExit_Click()
Unload Me
End SubPrivate Sub mnuTrayChangeIcon_Click()
On Error GoTo ErrHandler
With cdlOpen
.CancelError = True ' 设置标志
.InitDir = App.Path ' 默认的文件夹为当前文件夹
.Flags = cdlOFNHideReadOnly ' 设置过滤器
.Filter = "图标文件 (*.ico)|*.ico" ' 指定缺省的过滤器为图标文件
.ShowOpen ' 显示选定文件的名字
End With Image1.Picture = LoadPicture(cdlOpen.FileName) With myData
.hIcon = Image1.Picture
.uFlags = NIF_ICON
End With
Shell_NotifyIcon NIM_MODIFY, myDataErrHandler: ' 用户按了"取消"按钮
Exit Sub
End SubPrivate Sub mnuTrayClose_Click()Unload Me
End SubPrivate Sub Form_Resize()
If IsIconic(Me.hwnd) <> 0 Then ‘判断是否最小化,这地方有点难,临时该的
Form1.Visible = False If WindowState = vbMinimized Then
LastState = vbNormal
Else
LastState = WindowState
End If With myData
.cbSize = Len(myData)
.hwnd = Me.hwnd
.uID = 0
.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon.Handle '默认为窗口图标
.szTip = "提示" & vbNullChar
End With Shell_NotifyIcon NIM_ADD, myData
Select Case WindowState
Case vbMinimized
mnuTrayMaximize.Enabled = True
mnuTrayMinimize.Enabled = False
mnuTrayRestore.Enabled = True
Case vbMaximized
mnuTrayMaximize.Enabled = False
mnuTrayMinimize.Enabled = True
mnuTrayRestore.Enabled = True
Case vbNormal
mnuTrayMaximize.Enabled = True
mnuTrayMinimize.Enabled = True
mnuTrayRestore.Enabled = False
End Select
If WindowState <> vbMinimized Then LastState = WindowState
End If
End SubPrivate Sub mnuTrayMaximize_Click()
WindowState = vbMaximized
End SubPrivate Sub mnuTrayMinimize_Click()
WindowState = vbMinimized
End SubPrivate Sub mnuTrayRestore_Click()
SendMessage hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&
End Sub