是托盘图标吗?使用cSysTray控件

解决方案 »

  1.   

    使用API
    Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long我在网上找的一个例子
    可以参照一下
    1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False
    2、菜单:工程--添加模块   按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas
    3、在Module1中写下如下代码:Option ExplicitPublic 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 = &H206Public Const SW_RESTORE = 9
    Public Const SW_HIDE = 0Public 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 TypePublic 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就自动弹出来了。