打印本文 打印本文  关闭窗口 关闭窗口  
VB6如何在拖托盘中写入应用程序图标
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:45:56  文章录入:杜斌  责任编辑:杜斌

  1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False
  
  2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas
  
  3、在Module1中写下如下代码:
  
  Option Explicit
  
  Public Const MAX_TOOLTIP As Integer = 64
  Public Const NIF_ICON = &H2
  Public Const NIF_MESSAGE = &H1
  Public Const NIF_TIP = &H4
  Public Const NIM_ADD = &H0
  Public Const NIM_DELETE = &H2
  Public Const WM_MOUSEMOVE = &H200
  Public Const WM_LBUTTONDOWN = &H201
  Public Const WM_LBUTTONUP = &H202
  Public Const WM_LBUTTONDBLCLK = &H203
  Public Const WM_RBUTTONDOWN = &H204
  Public Const WM_RBUTTONUP = &H205
  Public Const WM_RBUTTONDBLCLK = &H206
  
  Public Const SW_RESTORE = 9
  Public Const SW_HIDE = 0
  
  Public nfIconData As 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 * MAX_TOOLTIP
  End Type
  
  Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
  Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long


  
  4、在Form1的Load事件中写下如下代码:
  
  Private Sub Form_Load()
  
  '以下把程序放入System Tray====================================System Tray Begin
  With nfIconData
  .hWnd = Me.hWnd
  .uID = Me.Icon
  .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
  .uCallbackMessage = WM_MOUSEMOVE
  .hIcon = Me.Icon.Handle
  '定义鼠标移动到托盘上时显示的Tip
  .szTip = App.Title + "(版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")" & vbNullChar
  .cbSize = Len(nfIconData)
  End With
  Call Shell_NotifyIcon(NIM_ADD, nfIconData)
  '=============================================================System Tray End
  Me.Hide
  End Sub
  
  5、在Form1的QueryUnload事件中写入如下代码:
  
  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
  End Sub
  
  6、在Form1的MouseMove事件中写下如下代码:
  
  Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Dim lMsg As Single
  lMsg = X / Screen.TwipsPerPixelX
  Select Case lMsg
  Case WM_LBUTTONUP
  'MsgBox "请用鼠标右键点击图标!", vbInformation, "实时播音专家"
  '单击左键,显示窗体
  ShowWindow Me.hWnd, SW_RESTORE
  '下面两句的目的是把窗口显示在窗口最顶层
  'Me.Show
  'Me.SetFocus
  '' Case WM_RBUTTONUP
  '' PopupMenu MenuTray '如果是在系统Tray图标上点右键,则弹出菜单MenuTray
  '' Case WM_MOUSEMOVE
  '' Case WM_LBUTTONDOWN
  '' Case WM_LBUTTONDBLCLK
  '' Case WM_RBUTTONDOWN
  '' Case WM_RBUTTONDBLCLK
  '' Case Else
  End Select
  End Sub
  
  7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。单击此图标,Form1就自动弹出来了。
打印本文 打印本文  关闭窗口 关闭窗口