zoukankan      html  css  js  c++  java
  • 状态栏图标和通知

        Option Explicit

        Public 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_MODIFY = &H1

        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 = &H206

        Public Const SW_RESTORE = 9

        Public Const SW_HIDE = 0

        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 Type

        Public 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


    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        Call DelStatusIcon
    End 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
                Call ShowMe '单击左键,显示窗体
               
            Case WM_RBUTTONUP
                SetForegroundWindow Me.hwnd ' 激活窗体,以便可以消除PopupMenu 弹出的菜单
                PopupMenu Me.mmu  '如果是在系统Tray图标上点右键,则弹出菜单MenuTray
           
            Case WM_MOUSEMOVE
               
            Case WM_LBUTTONDOWN
           
            Case WM_LBUTTONDBLCLK
           
            Case WM_RBUTTONDOWN
           
            Case WM_RBUTTONDBLCLK
           
            Case Else
       
        End Select

    End Sub


    Private Sub HideMe()
        App.TaskVisible = False
        Me.Hide
    End Sub

    Private Sub SetStatusIcon()
        With nfIconData
            .hwnd = Me.hwnd
           
            .uID = Me.hwnd
           
            .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)
    End Sub

    Private Sub UpdateIconTime()
        With nfIconData
            .uFlags = NIF_TIP
           
            .szTip = Format(Now, "yyyy-MM-dd hh:nn:ss dddd") & vbNullChar
        End With
       
        Call Shell_NotifyIcon(NIM_MODIFY, nfIconData)
    End Sub

    Private Sub UpdateIcon()
        With nfIconData
            .uFlags = NIF_ICON
           
            .hIcon = Me.Icon.Handle
        End With
       
        Call Shell_NotifyIcon(NIM_MODIFY, nfIconData)
    End Sub

    Private Sub DelStatusIcon()
        Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
    End Sub

    Private Sub ShowMe()
        ShowWindow Me.hwnd, SW_RESTORE
        App.TaskVisible = True
        '下面两句的目的是把窗口显示在窗口最顶层
        Me.Show
        Me.SetFocus
    End Sub

    Private Sub Form_Load()
       
        Call SetIcon(101)

        Call SetStatusIcon
       
        Call HideMe

    End Sub

    Private Sub SetIcon(ByVal index As Integer)
        Me.Icon = LoadResPicture(index, vbResIcon)
    End Sub

  • 相关阅读:
    php图片上传代码
    数据库笔记
    数学函数类方法的使用.java
    有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
    现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。 编写一个函数input,用来输入一个学生的数据记录。 编写一个函数print,打印一个学生的数据记录。 在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100
    求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字
    分数相加减的代码(c++)
    Caesar cipher
    db2、Oracle存储过程引号用法
    CSS基础总结
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/4784624.html
Copyright © 2011-2022 走看看