如何使得窗体最小化时,象OICQ一样把窗体图标显示在任务栏上,双击该图标即可打开窗体。

解决方案 »

  1.   

    '在模块中定义
    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 TypePublic Const WM_LBUTTONDOWN = &H201
    Public Const WM_LBUTTONDBLCLK = &H203
    Public Const WM_RBUTTONUP = &H205
    Public Const NIM_ADD = &H0
    Public Const NIM_MODIFY = &H1
    Public Const NIF_MESSAGE = &H1
    Public Const NIM_DELETE = &H2
    Public Const NIF_ICON = &H2
    Public Const NIF_TIP = &H4
    Public Const WM_MOUSEMOVE = &H200Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long'在窗口中定义
    Private Sub Form_Load()
        TrayIcon.cbSize = Len(TrayIcon)
        TrayIcon.hWnd = hWnd
        TrayIcon.uId = vbNull
        TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        TrayIcon.ucallbackMessage = WM_MOUSEMOVE
        TrayIcon.hIcon = Me.Icon
        TrayIcon.szTip = ls_Caption(50, li_Language) & Chr(0)
        
        '在系统栏添加拖盘
        Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    '构造系统拖盘结构
        TrayIcon.cbSize = Len(TrayIcon)
        TrayIcon.hWnd = Me.hWnd
        TrayIcon.uId = vbNull
        
        '删除系统栏的拖盘
        Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)
        Unload frmRight
        Unload frmDown
    End Sub
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    On Error Resume Next
        Dim Message As Long
        
        Message = X / Screen.TwipsPerPixelX    '判断鼠标消息,执行不同的功能
        Select Case Message
          Case WM_LBUTTONDOWN
              frmDown.Timer1.Enabled = frmDown.lb_FlagV
              frmMain.Show
              frmRight.Show
              frmDown.Show
              frmMain.WindowState = vbNormal
              SetForegroundWindow frmMain.hWnd
          Case WM_RBUTTONUP
              SetForegroundWindow frmMain.hWnd
              'PopupMenu mnuPopup
        End Select
    End Sub