VB最小化编程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要实现窗口最小化必须满足以下条件:
1:按下最小化按钮,窗体不可见
2:最小化后,最小化窗体的图标必须出现在任务栏的通知区域中
3:当双击通知区域中的图标时,窗体又显示出来,同时通知区域中的图标消失.
要满足上面的条件:
1:首先屏蔽窗体中系统自带的最小化图标,即Form.MinButton=False 2:声明1个API函数:
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_ NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICOND ATA) As Long
注意:上面这个API函数在XP中没有别名,将别名去掉后为: Public Declare Function Shell_NotifyIcon Lib "shell32.dll"(ByVal dwMe ssage As Long, lpData As NOTIFYICONDATA) As Long
3:声明7个常数:
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDBLCLK = &H203
4:定义1个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
End Type
5:声明一个nid的类型
Public nid as NOTIFYICONDATA
思路清晰后,开始编写代码
1:在窗体中画1个Command,它的Caption属性为:"最小化"
2:将窗体Form的MinButton的属性设为:"False"
3:在窗体中添加1个模块,模块中的代码为:
Public Declare Function Shell_NotifyIcon Lib "shell32.dll"(ByVal dwMe
ssage As Long, lpData As NOTIFYICONDATA) As Long
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDBLCLK = &H203
Public Type NOTIFYICONDATA
cbSize as Long
hWnd as Long
uId as Long
uFlags as Long
uCallBackMessage as Long
hIcon as Long
szTip as String
End Type
Public nid as NOTIFYICONDATA
4:编写Command的单击事件:
Private Sub Command1_Click()
nid.cbSize = Len(nid)
nid.uId = vbNull
nid.hWnd = Me.hWnd
nid.uFlags = NIF_TIP Or NIF_MESSAGE Or NIF_ICON
nid.uCallBackMessage = WM_MOUSEMOVE
nid.hIcon = Me.Icon
nid.szTip = "窗体最小化"
Shell_NotifyIcon NIM_ADD, nid
Me.Hide
End Sub
5:编写窗体的MouseMove事件:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X A s Single, Y As Single)
Dim msg As Long
msg = X / 15
If msg = WM_LBUTTONDBLCLK Then
Me.Show
Shell_NotifyIcon NIM_DELETE, nid
End If
End Sub
按F5启动,单击Command,看看通知区域中是不是多了个窗体的图标?
双击该图标,窗体又显示出来了!
一、Shell_NotifyIcon 函数说明
此函数用来向任务栏托盘区域发送消息
1、函数格式
BOOL Shell_NotifyIcon( DWORD dwMessage,PNOTIFYIC ONDATA lpdata);
2、参数说明:
dwMessage为输入参数,传递发送的消息,表明要执行的操作。可选的值如下:
NIM_ADD
向托盘区域添加一个图标。此时第二个参数lpdata指向的NO TIFYICONDATA结构体中的hWnd和uID成员用来标示这个图标,以便以后再次使用Shell_NotifyIcon对此图标操作。
NIM_DELETE
删除托盘区域的一个图标。此时第二个参数lpdata指向的NO TIFYICONDATA结构体中的hWnd和uID成员用来标示需要被删除的这个图标。
NIM_MODIFY
修改托盘区域的一个图标。此时第二个参数lpdata指向的NO TIFYICONDATA结构体中的hWnd和uID成员用来标示需要被修改的这个图标。