当前位置: 网学 > 编程文档 > VB > 正文

用VB开发托盘程序

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
的消息决定

   我们要自己写程序来处理消息,必须先更改窗口的属性,从原来由默认的窗口过程来处理消息变成由我们自己写的消息处理过程来处理消息。方法是使用SetWindowLong函数来取得默认窗口过程的地址,然后转向为我们自己写的窗口过程的地址,具体的实现方法如下代码:

''GWL_WNDPROC获得该窗口的窗口过程的地址,AddressOf是取址函数,NewWindowProc是我们写的过程
OldWindowProc = SetWindowLong(frm.HWnd, GWL_WNDPROC, AddressOf
               NewWindowProc)
 
  然后在NewWindowProc函数中写入如下代码,需要注意的是下面代码中红色的TRAY_CALLBACK是由托盘区图标传来的消息,要让托盘图标传回消息,必须在添加托盘图标时指定:

   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
       ''而这时窗体的状态是最小化时
       If TheForm.WindowState = vbMinimized Then _
        ''恢复到最小化前的窗体状态
          TheForm.WindowState = TheForm.LastState
          TheForm.SetFocus
          Exit Function
       End If
     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  

  这样我们就取得并处理了来自托盘图标的消息,现在的问题是在鼠标右键菜单弹出后,怎么控制程序主窗体的状态,这时我们需要用到SendMessage函数来向主窗体发送最大化、最小化、关闭、移动等消息,具体的代码实现如下,其中HWnd是主窗体的句柄,WM_SYSCOMMAND表示发送的是系统控制类的消息,SC_MOVE、SC_SIZE、SC_RESTORE便是要发送的消息了:

   ''托盘图标右键菜单上的“移动”项被点击时
   Private Sub mnuTrayMove_Click()
     SendMessage HWnd, WM_SYSCOMMAND, SC_MOVE, 0&
   End Sub
   ''托盘图标右键菜单上的“恢复”项被点击时
   Private Sub mnuTrayRestore_Click()
     SendMessage HWnd, WM_SYSCOMMAND, SC_RESTORE, 0&
   End Sub
   ''托盘图标右键菜单上的“退出”项被点击时
   Private Sub mnuTraySize_Click()
     SendMessage HWnd, WM_SYSCOMMAND, SC_SIZE, 0&
   End Sub  

  最后要提醒你,在程序退出时一定要把窗口过程的地址恢复为默认值,同时把托盘图标移去哦。
   
   为了学习方便,以下提供了源代码:

''---------------------------------------------
'' 使用系统托盘程序演示
''---------------------------------------------
''程序说明:
'' 这是一个比较完整的使用系统托盘的程序实例,包括
''了:添加托盘图标,删除托盘图标,动态改变托盘图标,
''为托盘图标添加浮动提示信息,实现托盘图标的鼠标右键
''菜单等内容。
''-------名称-------------------作用------------
'' Form1 主窗体
'' mnuFile,mnuFileExit 文件菜单,菜单项
'' mnuTray,mnuTrayClose 托盘区右键菜单,菜单项
''

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号