Private 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 Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Declare Function Shell_NotifyIcon Lib "shell32" _ Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As BooleanPrivate Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205Dim t As NOTIFYICONDATA
Dim Flag As Integer  'Flag为一开关,使得窗体第一次加载时,不被最小化。.Private Sub Form_Load()
    Flag = 1
End SubPrivate Sub Form_Resize()
    If Me.WindowState = 1 Then
        If Flag <> 1 Then
            Me.Hide
        End If
        t.cbSize = Len(t)
        t.hWnd = Picture1.hWnd
        t.uId = 1&
        t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        t.ucallbackMessage = WM_MOUSEMOVE
        t.hIcon = Picture1.Picture
        t.szTip = "Click me to maximize..." & Chr$(0)
        Shell_NotifyIcon NIM_ADD, t
        Else
            Flag = 2
    End If
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X _
As  Single, Y As Single)
    If Me.WindowState <> vbMinimized Then
        Exit Sub
    End If
    Dim lX As Long
    ' VB manipulates the x value according to scale mode:
    ' we must remove this before we can interpret the
    ' message windows was trying to send to us:
    lX = ScaleX(x, Me.ScaleMode, vbPixels)
    Select Case lX
    Case WM_MOUSEMOVE
        '
    Case WM_LBUTTONDOWN        t.cbSize = Len(t)
        t.hWnd = Picture1.hWnd
        t.uFlags = NIF_ICON
        t.uId = 1&
        Shell_NotifyIcon NIM_DELETE, t
        Me.WindowState = vbNormal
        Me.Show
    
    Case WM_LBUTTONUP
        '
    Case WM_LBUTTONDBLCLK
        '
    Case WM_RBUTTONDOWN
        '
    Case WM_RBUTTONUP
        '
    Case WM_RBUTTONDBLCLK
        '
    End Select
End Sub

解决方案 »

  1.   

    好好看一下Msdn吧,鼠标左键=1;右键=2;中间=3
    回去后在试一下.
      

  2.   

    多谢各位给于的关注,特别是ltpao朋友,非常感谢你回了这么长的一段代码,谢谢!同时还要谢谢快乐兔子朋友和其他哥们。但是,我的本意是想找出为什么在win2000系统下,程序可以正常运行,而win98下则不行?MSDN中的关于mousemove()事件的例子我看过了,我就是仿照它的做的,可在win98就是把Button的值认为0——在用左键单击时!——没办法!ltpao朋友的代码我有看过的,但稍嫌烦琐,就没用!如果实在没办法的话,也只好如此了!在此先请各位等会儿,分数一定奉上。多谢了!