在程序最小化的时候或者点击右上角的红X的时候,如何让程序不退出,并且在任务栏里不显示而在托盘区里显示一个小图标,以实现界面隐藏?

解决方案 »

  1.   


    Private Sub Form_Unload(Cancel As Integer)
      Cancel=true  
      form.visible=false
      ''显示小图标
    End Sub
      

  2.   


      Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
      
      Dim TrayIcon As NOTIFYICONDATA, bolFlag As BooleanPrivate Sub mum_Minsize_Click()
              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
              '在系统栏添加拖盘
              Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
              Me.Hide
    End Sub
      

  3.   


    Option ExplicitPrivate Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
           (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As BooleanPrivate Const WM_LBUTTONUP = &H202
    Private Const WM_RBUTTONUP = &H205
    Private Const NIM_ADD = &H0
    Private Const NIM_MODIFY = &H1
    Private Const NIF_MESSAGE = &H1
    Private Const NIM_DELETE = &H2
    Private Const NIF_ICON = &H2
    Private Const NIF_TIP = &H4
    Private Const WM_MOUSEMOVE = &H200Private 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 TypePrivate TrayIcon As NOTIFYICONDATAPrivate Sub Form_Resize()
       If Me.WindowState = 1 Then
          Me.Hide
          Me.WindowState = 0
          MyTray
       End If
       
    End SubPrivate Sub Form_Unload(Cancel As Integer)
       Cancel = True
       Me.Hide
       MyTray
       
    End SubPrivate Sub MyTray()
       TrayIcon.cbSize = Len(TrayIcon)
       TrayIcon.hWnd = Me.hWnd
       TrayIcon.uId = vbNull
       TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
       TrayIcon.ucallbackMessage = WM_MOUSEMOVE
       TrayIcon.hIcon = Me.Icon
       TrayIcon.szTip = "chinaboyzyq Tray test" & Chr$(0)
       Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
       App.TaskVisible = False
        
    End SubPrivate Sub RemoveTrayIcon()
        TrayIcon.cbSize = Len(TrayIcon)
        TrayIcon.hWnd = Me.hWnd
        TrayIcon.uId = vbNull
        Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Static Message As Long
        Message = X / Screen.TwipsPerPixelX
        
         Select Case Message
            Case WM_LBUTTONUP
                 RemoveTrayIcon
                 Me.Show
         End Select
        
    End Sub
      

  4.   

    在窗口的QueryUnload事件中添加以下代码:Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
      Cancel = 1'将Cancel设定为非0的值,就可以阻止窗体关闭
      Me.Hide'隐藏自己
      Form_Resize'调用Resize事件的代码
    End Sub然后外加上我的一个源码中的内容,就可以了,下载地址是http://jiluoxingren.download.csdn.net/user/JiLuoXingRen/all/1
    找那个【VB最小化到系统托盘控件,配源码(最简单的代码)】源码,里面有如何将程序最小化到托盘的源码,如果你不想看那么多,只想实现功能,就直接看工程1,看里面的代码,把上面的代码复制到窗体里,然后运行刚好是你要的效果。压缩包里还有一个SysTray.OCX,看懂源码后,就可以在你的程序里打开不见对话框,然后浏览,找到SysTray.OCX,然后你就会看到工具箱里有你在源码中看到的csysTray控件了,照着源码用吧。