我的源程序在下面
出现问题是:执行后,鼠标点在状态栏的哪个图标上,没反应,也就是form_mousemove事件根本就没反应,程序没有执行到那里去模块程序
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const WM_SYSCOMMAND = &H112
Public Const SC_RESTORE = &HF120&Public LastState As Integer '保留原窗口状态'---------- dwMessage可以是以下NIM_ADD、NIM_DELETE、NIM_MODIFY 标识符之一----------
Public Const NIM_ADD = &H0 '在任务栏中增加一个图标
Public Const NIM_DELETE = &H2 '删除任务栏中的一个图标
Public Const NIM_MODIFY = &H1 '修改任务栏中个图标信息Public Const NIF_MESSAGE = &H1 'NOTIFYICONDATA结构中uFlags的控制信息
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4Public Const WM_MOUSEMOVE = &H200 '当鼠标指针移至图标上Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONUP = &H205Public 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 '图标的提示信息
szInfoTitle As String * 64
End Type
窗体程序Option ExplicitDim myData As NOTIFYICONDATAPrivate Sub Form_Load()
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
.szTip = "lala" & Chr(13) & ":)" & vbNullChar
End With
Shell_NotifyIcon NIM_ADD, myData
End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case CLng(X)
Case WM_RBUTTONUP '鼠标在图标上右击时弹出菜单
MsgBox "sfd"
Case WM_LBUTTONUP '鼠标在图标上左击时窗口若最小化则恢复窗口位置
If Me.WindowState = vbMinimized Then
Me.Show
Me.WindowState = LastState
SendMessage hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&
' Me.Show 1
End If
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("你是否要退出局域网消息发送器 ?", 4 + 32 + 256, "局域网消息发送器") = vbYes Then
Cancel = False
Shell_NotifyIcon NIM_DELETE, myData '窗口卸载时,将状态栏中的图标一同卸载
End
Else
Cancel = True
End If
End Sub
Private Sub Form_Resize()
' mnvComputer.Width = Me.Width - 150
' If Me.Height - 850 > 0 Then
' mnvComputer.Height = Me.Height - 850
' End If
' SSTab1.Width = Me.Width - 20
' SSTab1.Height = Me.Height Select Case WindowState
Case vbMinimized
Me.Hide
' mnuTrayMaximize.Enabled = True
' mnuTrayMinimize.Enabled = False
'mnuTrayRestore.Enabled = True
Case vbMaximized
' mnuTrayMinimize.Enabled = True
' mnuTrayRestore.Enabled = True
'SSTab1.SetFocus
Case vbNormal
' mnuTrayMaximize.Enabled = True
'Me.Width = 1800
'Me.Height = 6855
'mnuTrayMinimize.Enabled = True
'mnuTrayRestore.Enabled = False
' SSTab1.SetFocus
End Select
'mnuTrayMaximize.Enabled = False
If WindowState <> vbMinimized Then LastState = WindowState
End Sub
出现问题是:执行后,鼠标点在状态栏的哪个图标上,没反应,也就是form_mousemove事件根本就没反应,程序没有执行到那里去模块程序
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const WM_SYSCOMMAND = &H112
Public Const SC_RESTORE = &HF120&Public LastState As Integer '保留原窗口状态'---------- dwMessage可以是以下NIM_ADD、NIM_DELETE、NIM_MODIFY 标识符之一----------
Public Const NIM_ADD = &H0 '在任务栏中增加一个图标
Public Const NIM_DELETE = &H2 '删除任务栏中的一个图标
Public Const NIM_MODIFY = &H1 '修改任务栏中个图标信息Public Const NIF_MESSAGE = &H1 'NOTIFYICONDATA结构中uFlags的控制信息
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4Public Const WM_MOUSEMOVE = &H200 '当鼠标指针移至图标上Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONUP = &H205Public 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 '图标的提示信息
szInfoTitle As String * 64
End Type
窗体程序Option ExplicitDim myData As NOTIFYICONDATAPrivate Sub Form_Load()
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
.szTip = "lala" & Chr(13) & ":)" & vbNullChar
End With
Shell_NotifyIcon NIM_ADD, myData
End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case CLng(X)
Case WM_RBUTTONUP '鼠标在图标上右击时弹出菜单
MsgBox "sfd"
Case WM_LBUTTONUP '鼠标在图标上左击时窗口若最小化则恢复窗口位置
If Me.WindowState = vbMinimized Then
Me.Show
Me.WindowState = LastState
SendMessage hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&
' Me.Show 1
End If
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("你是否要退出局域网消息发送器 ?", 4 + 32 + 256, "局域网消息发送器") = vbYes Then
Cancel = False
Shell_NotifyIcon NIM_DELETE, myData '窗口卸载时,将状态栏中的图标一同卸载
End
Else
Cancel = True
End If
End Sub
Private Sub Form_Resize()
' mnvComputer.Width = Me.Width - 150
' If Me.Height - 850 > 0 Then
' mnvComputer.Height = Me.Height - 850
' End If
' SSTab1.Width = Me.Width - 20
' SSTab1.Height = Me.Height Select Case WindowState
Case vbMinimized
Me.Hide
' mnuTrayMaximize.Enabled = True
' mnuTrayMinimize.Enabled = False
'mnuTrayRestore.Enabled = True
Case vbMaximized
' mnuTrayMinimize.Enabled = True
' mnuTrayRestore.Enabled = True
'SSTab1.SetFocus
Case vbNormal
' mnuTrayMaximize.Enabled = True
'Me.Width = 1800
'Me.Height = 6855
'mnuTrayMinimize.Enabled = True
'mnuTrayRestore.Enabled = False
' SSTab1.SetFocus
End Select
'mnuTrayMaximize.Enabled = False
If WindowState <> vbMinimized Then LastState = WindowState
End Sub
解决方案 »
- 问个MAPX的查询问题
- 谁能给我一个应用程序 访问 数据库 储存过程的 DEMO..
- 求一个TREEVIEW的算法,联系到数据库的~
- 批量修改数据表内容的sql语句问题
- 三百分求VB4的安装程序,中文或英文均可
- 如何从已经编译成exe文件的flash动画中提取出swf文件?
- 关于VB实现多线程的操作。讲讲方法或想法都行呀。
- 生成DLL文件后,每次重新更改DLL文件内容,都要重新编译DLL,并且应用程序必须重新引用DLL,能不能不重新引用呢?UP有分
- 修改窗体左上角的菜单
- 我想问一下vb和vbscript在区别到底在哪里???请详细一点!!拜托!!!!
- 对Access进行数据查找时如何能区分大小写?
- 谁能告诉我,哪里有软键盘(ACTIVE X)控件!!!
Case WM_RBUTTONUP '鼠标在图标上右击时弹出菜单
MsgBox "sfd"
Case WM_LBUTTONUP '鼠标在图标上左击时窗口若最小化则恢复窗口位置
If Me.WindowState = vbMinimized Then
Me.Show
Me.WindowState = LastState
SendMessage hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&
' Me.Show 1
End If
End Select
这里有错,API中的坐标单位是Pixels,VB默认的坐标单位是Twips
改一下:
Select Case CLng(X/ Screen.TwipsPerPixelX)
Case WM_RBUTTONUP '鼠标在图标上右击时弹出菜单
MsgBox "sfd"
Case WM_LBUTTONUP '鼠标在图标上左击时窗口若最小化则恢复窗口位置
If Me.WindowState = vbMinimized Then
Me.Show
Me.WindowState = LastState
SendMessage hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&
' Me.Show 1
End If
End Select
我晕,居然有这种事情发生,代码是好的,独立出来都可以,可我的软件不可以
大虾们帮帮阿(天火大虾非常感谢你)
大概有那些原因会导致这种情况呢?