早教吧 育儿知识 作业答案 考试题库 百科 知识分享

VB高手请进,帮我看下mnuTray该如何定义!在窗体上用菜单编辑器添加一个菜单项:标题与名称均为:mnuTray,设置其为隐藏,再随便添加几个子菜单,具体的功能你可以根据你的具体需要来编

题目详情
VB高手请进,帮我看下mnuTray 该如何定义!在窗体上用菜单编辑器添加一个菜单项:标题与名称均为:mnuTray,设置其为隐藏,再随便添加 几个子菜单,具体的功能你可以根据你的具体需要来编辑 1.模块的代码 Option Explicit Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long Public Const WM_USER = &H400 Public Const WM_LBUTTONUP = &H202 Public Const WM_MBUTTONUP = &H208 Public Const WM_RBUTTONUP = &H205 Public Const TRAY_CALLBACK = (WM_USER + 1001&) Public Const GWL_WNDPROC = (-4) Public Const GWL_USERDATA = (-21) Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4 Public Const NIM_ADD = &H0 Public Const NIF_MESSAGE = &H1 Public Const NIM_MODIFY = &H1 Public Const NIM_DELETE = &H2 Public OldWindowProc As Long Public TheForm As Form Public TheMenu As Menu Public Type NOTIFYICONDATA cbSize As Long hwnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 End Type Private TheData As NOTIFYICONDATA '新的窗口程序,它将取代原来的窗口程序 Public Function NewWindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = TRAY_CALLBACK Then '如果用户单击了托盘图标 If lParam = WM_LBUTTONUP Then ' 单击左键,恢复窗体 TheForm.WindowState = 0 End If If lParam = WM_RBUTTONUP Then '单击右键,弹出快捷菜单 TheForm.PopupMenu TheMenu Exit Function End If End If '将其他消息传递给原来的窗口程序 NewWindowProc = CallWindowProc(OldWindowProc, hwnd, Msg, wParam, lParam) End Function Public Sub AddToTray(frm As Form, mnu As Menu) '将程序图标添加到系统托盘区 '保存变量以供其他处引用 Set TheForm = frm Set TheMenu = mnu '装载新的窗口程序 OldWindowProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, AddressOf NewWindowProc) ' 将程序图标添加到系统托盘区 With TheData .uID = 0 .hwnd = frm.hwnd .cbSize = Len(TheData) .hIcon = frm.Icon.Handle .uFlags = NIF_ICON + NIF_TIP + NIF_MESSAGE .uCallbackMessage = TRAY_CALLBACK .uFlags = .uFlags Or NIF_MESSAGE .cbSize = Len(TheData) End With Shell_NotifyIcon NIM_ADD, TheData End Sub Public Sub RemoveFromTray() '将图标从系统托盘区中删除 TheData.uFlags = 0 Shell_NotifyIcon NIM_DELETE, TheData SetWindowLong TheForm.hwnd, GWL_WNDPROC, OldWindowProc ' 恢复原来的窗口程序 . End Sub Public Sub SetTrayTip(tip As String) '设置图标的提示信息 With TheData .szTip = tip & vbNullChar .uFlags = NIF_TIP End With Shell_NotifyIcon NIM_MODIFY, TheData End Sub 2.窗体的代码: Option Explicit Private Sub Form_Load() AddToTray Me, mnuTray '调用添加托盘图标子程序 SetTrayTip "王牌软件" '调用在托盘图标上显示提示的子程序 End Sub Private Sub Form_Unload(Cancel As Integer) On Error Resume Next RemoveFromTray '在窗体退出后,删除托盘中的图标 End Sub 请说详细点!谢谢...若能解决问题,必然送分
▼优质解答
答案和解析
vb中是不能这么声明的!! 每个变量都有定义! 错误原因:inputbox 返回的是字符串型,所以无法比较! 改正方法1: Dim x As Integer, y As Integer, z As Integer, t As Integer 改正方法2:x% = InputBox("输入一个...