我想实现的是在电脑的右下角弹出提示窗口(像QQ的一样),功能就是提示的时候缓缓谈出,关闭的时候就缓缓缩下去,如何实现,谢谢了

解决方案 »

  1.   

    你在窗体显示结束后,运行过程
    通过计时器使窗体的top值,从桌面的高度到桌面的高度一窗体的高度,
    frm.top=frm.top-k'这个K是你上升的速度,你自己调试
      

  2.   

    实现托盘的代码
    1:模块1Option 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 = 0
    Public Const SW_SHOW = 5
    Public Const SW_SHOWNORMAL = 1'Long,为窗口指定可视性方面的一个命令。请用下述任何一个常数
    'SW_HIDE 隐藏窗口,活动状态给令一个窗口
    'SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
    'SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
    'SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
    'SW_SHOWMAXIMIZED 最大化窗口,并将其激活
    'SW_SHOWMINIMIZED 最小化窗口,并将其激活
    'SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
    'SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
    'SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
    'SW_SHOWNORMAL 与SW_RESTORE相同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 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
    Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongDeclare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long2:窗体1Private Sub AA_Click()
        ShowWindow Me.hwnd, SW_SHOWNORMAL
    End SubPrivate Sub Form_DblClick()
        ShowWindow Me.hwnd, SW_RESTORE
    End SubPrivate Sub Form_Load()
    '以下把程序放入System Tray====================================System Tray Begin
        Me.Left = Screen.Width / 2 - Me.Width / 2
        Me.Top = Screen.Height / 2 - Me.Height / 2  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 = "Googo一卡通" + "(版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")" & vbNullChar
        .cbSize = Len(nfIconData)
      End With
      Call Shell_NotifyIcon(NIM_ADD, nfIconData)
      '=============================================================System Tray End
      Me.Hide
      Dim TxtString As String * 255
    Dim Lenth As Integer
    Lenth = Len(TxtString) - 1
    GetWindowText Me.hwnd, TxtString, Lenth
    Debug.Print TxtStringEnd Sub
    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
                PopupMenu MenuTray '如果是在系统Tray图标上点右键,则弹出菜单MenuTray
           Case WM_RBUTTONDBLCLK
                
           Case Else
                'SetForegroundWindow (Me.hwnd)
      End Select
    End Sub
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        Cancel = True
        'Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
        Me.Hide
        Call Shell_NotifyIcon(NIM_ADD, nfIconData)
    End Sub
    Private Sub Form_Resize()
        If Me.WindowState = vbMinimized And Me.Visible Then
                      Me.Hide
                      Call Shell_NotifyIcon(NIM_ADD, nfIconData)
              ElseIf Me.WindowState = vbMaximized Then
                      Me.WindowState = vbNormal
              End If
    End SubPrivate Sub mnuAbout_Click()
        MsgBox "sasasas"
    End SubPrivate Sub mnuExit_Click()
        Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
        End
    End Sub