`
lovecontry
  • 浏览: 1095109 次
文章分类
社区版块
存档分类
最新评论

托盘图标提示

 
阅读更多

'*************************************************************************
'**模 块 名:frmTest
'**说 明:YFsoft 版权所有2004 - 2005(C)
'**创 建 人:叶帆
'**日 期:2004-10-14 09:08:28
'**修 改 人:
'**日 期:
'**描 述:托盘气球提示
'**版 本:V1.0.0
'*************************************************************************
Option Explicit
'*************************************************************************
'**函 数 名:cmdDel_Click
'**输 入:无
'**输 出:无
'**功能描述:删除图标
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2004-10-14 09:34:58
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub cmdDel_Click()
DelNotifyIcon Me
End Sub
'*************************************************************************
'**函 数 名:cmdShow_Click
'**输 入:无
'**输 出:无
'**功能描述:显示提示
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2004-10-14 09:34:44
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub cmdShow_Click()
ShowNotifyIcon Me, txtTitle, txtInfo, cmbType.ListIndex
End Sub
'*************************************************************************
'**函 数 名:Form_Load
'**输 入:无
'**输 出:无
'**功能描述:
'**全局变量:
'**调用模块:初始化
'**作 者:叶帆
'**日 期:2004-10-14 09:08:57
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub Form_Load()
cmbType.ListIndex = 1 '信息图标
cmdShow_Click '显示信息
End Sub
'*************************************************************************
'**函 数 名:Form_Unload
'**输 入:Cancel(Integer) -
'**输 出:无
'**功能描述:结束
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2004-10-14 09:35:32
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub Form_Unload(Cancel As Integer)
'删除图标
cmdDel_Click
' 卸载所有窗体
Dim frm As Form
For Each frm In Forms
Unload frm
Next
End Sub
--------------------------------------------------------------------------------
'模块代码
'*************************************************************************
'**模 块 名:mdlNotifyBase
'**说 明:YFsoft 版权所有2004 - 2005(C)
'**创 建 人:叶帆
'**日 期:2004-10-14 09:17:46
'**修 改 人:
'**日 期:
'**描 述:显示托盘提示模块
'**版 本:V1.0.0
'*************************************************************************
Option Explicit
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_RBUTTONUP = &H205
Private Const WM_USER = &H400
Private Const WM_NOTIFYICON = WM_USER + 1 ' 自定义消息
Private Const WM_LBUTTONDBLCLK = &H203
Private Const GWL_WNDPROC = (-4)
' 关于气球提示的自定义消息, 2000下不产生这些消息
Private Const NIN_BALLOONSHOW = (WM_USER + &H2) ' 当 Balloon Tips 弹出时执行
Private Const NIN_BALLOONHIDE = (WM_USER + &H3) ' 当 Balloon Tips 消失时执行(如 SysTrayIcon 被删除),
' 但指定的 TimeOut 时间到或鼠标点击 Balloon Tips 后的消失不发送此消息
Private Const NIN_BALLOONTIMEOUT = (WM_USER + &H4) ' 当 Balloon Tips 的 TimeOut 时间到时执行
Private Const NIN_BALLOONUSERCLICK = (WM_USER + &H5) ' 当鼠标点击 Balloon Tips 时执行。
' 注意:在XP下执行时 Balloon Tips 上有个关闭按钮,
' 如果鼠标点在按钮上将接收到 NIN_BALLOONTIMEOUT 消息。
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Type NOTIFYICONDATA
cbSize As Long ' 结构大小(字节)
hwnd As Long ' 处理消息的窗口的句柄
uId As Long ' 唯一的标识符
uFlags As Long ' Flags
uCallBackMessage As Long ' 处理消息的窗口接收的消息
hIcon As Long ' 托盘图标句柄
szTip As String * 128 ' Tooltip 提示文本
dwState As Long ' 托盘图标状态
dwStateMask As Long ' 状态掩码
szInfo As String * 256 ' 气球提示文本
uTimeoutOrVersion As Long ' 气球提示消失时间或版本
' uTimeout - 气球提示消失时间(单位:ms, 10000 -- 30000)
' uVersion - 版本(0 for V4, 3 for V5)
szInfoTitle As String * 64 ' 气球提示标题
dwInfoFlags As Long ' 气球提示图标
End Type
' dwState to NOTIFYICONDATA structure
Private Const NIS_HIDDEN = &H1 ' 隐藏图标
Private Const NIS_SHAREDICON = &H2 ' 共享图标
' dwInfoFlags to NOTIFIICONDATA structure
Private Const NIIF_NONE = &H0 ' 无图标
Private Const NIIF_INFO = &H1 ' "消息"图标
Private Const NIIF_WARNING = &H2 ' "警告"图标
Private Const NIIF_ERROR = &H3 ' "错误"图标
' uFlags to NOTIFYICONDATA structure
Private Const NIF_ICON As Long = &H2
Private Const NIF_INFO As Long = &H10
Private Const NIF_MESSAGE As Long = &H1
Private Const NIF_STATE As Long = &H8
Private Const NIF_TIP As Long = &H4
' dwMessage to Shell_NotifyIcon
Private Const NIM_ADD As Long = &H0
Private Const NIM_DELETE As Long = &H2
Private Const NIM_MODIFY As Long = &H1
Private Const NIM_SETFOCUS As Long = &H3
Private Const lngNIM_SETVERSION As Long = &H4
Private lngPreWndProc As Long
'*************************************************************************
'**函 数 名:ShowNotifyIcon
'**输 入:frm(Form) - 窗体
'** :strTitle(String) - 托盘提示标题
'** :strInfo(String) - 托盘提示信息
'** :Optional lngType(Long = 1) - 托盘提示类型 0 无 1 信息 2 警告 3 错误
'** :Optional lngTime(Long = 10000) - 停留时间
'**输 出:无
'**功能描述:显示托盘图标提示信息
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2004-10-14 09:23:14
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Sub ShowNotifyIcon(frm As Form, strTitle As String, strInfo As String, Optional lngType As Long = 1, Optional lngTime As Long = 10000)
' 向托盘区添加图标
Dim IconData As NOTIFYICONDATA
strTitle = strTitle & vbNullChar
strInfo = strInfo & vbNullChar
With IconData
.cbSize = Len(IconData)
.hwnd = frm.hwnd
.uId = 0
.uFlags = NIF_TIP Or NIF_ICON Or NIF_MESSAGE Or NIF_INFO Or NIF_STATE
.uCallBackMessage = WM_NOTIFYICON
.szTip = strTitle
.hIcon = frm.Icon.Handle
.dwState = 0
.dwStateMask = 0
.szInfo = strInfo
.szInfoTitle = strTitle
.dwInfoFlags = lngType
.uTimeoutOrVersion = lngTime
End With
If lngPreWndProc = 0 Then '没有初始化
Shell_NotifyIcon NIM_ADD, IconData
lngPreWndProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, AddressOf WindowProc)
Else '已初始化
Shell_NotifyIcon NIM_MODIFY, IconData
End If
End Sub
'*************************************************************************
'**函 数 名:DelNotifyIcon
'**输 入:frm(Form) - 窗体
'**输 出:无
'**功能描述:删除托盘图标
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2004-10-14 09:33:01
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Public Sub DelNotifyIcon(frm As Form)
If lngPreWndProc <> 0 Then
' 删除托盘区图标
Dim IconData As NOTIFYICONDATA
With IconData
.cbSize = Len(IconData)
.hwnd = frm.hwnd
.uId = 0
.uFlags = NIF_TIP Or NIF_ICON Or NIF_MESSAGE
.uCallBackMessage = WM_NOTIFYICON
.szTip = ""
.hIcon = frm.Icon.Handle
End With
Shell_NotifyIcon NIM_DELETE, IconData
SetWindowLong frm.hwnd, GWL_WNDPROC, lngPreWndProc
lngPreWndProc = 0
End If
End Sub
'*************************************************************************
'**函 数 名:WindowProc
'**输 入:ByVal hwnd(Long) -
'** :ByVal msg(Long) -
'** :ByVal wParam(Long) -
'** :ByVal lParam(Long) -
'**输 出:(Long) -
'**功能描述:frmTest 窗口入口函数
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2004-10-14 09:19:06
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
' 拦截 WM_NOTIFYICON 消息
If msg = WM_NOTIFYICON Then
Select Case lParam
Case WM_RBUTTONUP
' 右键单击图标是运行这里的代码, 可以在这里添加弹出右键菜单的代码
Case WM_LBUTTONDBLCLK
' 左键单击 显示窗体
frmTest.Show
Case NIN_BALLOONSHOW
Debug.Print "显示气球提示"
Case NIN_BALLOONHIDE
Debug.Print "删除托盘图标"
Case NIN_BALLOONTIMEOUT
Debug.Print "气球提示消失"
Case NIN_BALLOONUSERCLICK
Debug.Print "单击气球提示"
End Select
End If
WindowProc = CallWindowProc(lngPreWndProc, hwnd, msg, wParam, lParam)
End Function

分享到:
评论

相关推荐

    API实现托盘图标气泡提示

    本话题主要关注的是如何在应用程序中实现托盘图标及其相关的气泡提示功能,这通常涉及到桌面应用的用户界面设计。 托盘图标,也称为系统托盘图标或通知区域图标,是位于操作系统任务栏右侧的一个小图标,通常用于...

    托盘气球提示框+刷新托盘图标

    在IT领域,托盘气球提示框和刷新托盘图标是桌面应用程序中常见的功能元素,主要涉及用户界面(UI)设计和系统通知的实现。这些功能通常与系统托盘区域,也就是任务栏右下角的图标区域相关联。下面将详细讲解这两个...

    制作一个系统托盘图标的资源

    - 考虑不同语言环境下的本地化,确保托盘图标和提示信息的适用性。 6. 注册表配置: - 对于某些自启动的应用程序,可能需要在注册表中设置值,使系统启动时自动显示托盘图标。 7. 错误处理和资源释放: - 在...

    托盘图标支持库1.1#1版

    其它特性:允许设置托盘图标提示文本,允许隐藏托盘图标,可以取到托盘图标在屏幕中的位置,当Explorer出错重启后托盘图标不会丢失(感谢易友“碎梦追风”的提议)。1.1#1版修改了“在同一窗口放置多个‘托盘图标’...

    Qt创建托盘图标

    3. **设置托盘图标属性**:使用`setIcon()`方法设置托盘图标的图标,`setToolTip()`方法可以为图标添加提示文本,以便当鼠标悬停在图标上时显示。 4. **创建菜单和动作**:通常,托盘图标会关联一个上下文菜单,...

    托盘图标的制作,双击托盘图标重新打开窗口,点击托盘图标右键可以选择是打开窗口还是退出程序

    在Windows操作系统中,托盘图标,也称为系统托盘图标或通知区域图标,是指位于任务栏右侧的小图标,用于提供程序的状态信息和快捷操作。这个技术通常被用于后台运行的应用程序,以便用户能够轻松访问其功能而不占用...

    delphi程序托盘图标

    使用TTrayIcon的Hint属性,可以为托盘图标设置提示信息,当鼠标悬浮在图标上时显示。此外,TTrayIcon还提供了ShowBalloonHint方法,可以显示一个带有标题和消息的气泡提示。 通过以上步骤,你就可以在Delphi中创建...

    增强托盘图标测试

    4. **多语言支持**:如果应用程序面向全球用户,需要检查托盘图标和关联的提示信息是否支持多种语言。 5. **兼容性**:在不同的操作系统版本、屏幕分辨率和主题模式下,托盘图标是否能正常显示和工作。同时,也要...

    托盘图标类TrayIcon

    3. `LPCSTR`:托盘图标的提示文字,当鼠标悬停在图标上时显示。 4. `LPCTSTR`:可选的菜单定义,允许用户通过右键点击托盘图标来访问菜单项。 在`TrayIcon`类中,可能会有以下几个核心方法: 1. `Show()`:显示...

    e语言-托盘图标动态提示文本

    本资源"e语言-托盘图标动态提示文本"聚焦于如何利用易语言来实现Windows系统托盘图标的动态提示文本功能。这个功能常见于很多软件中,比如系统托盘中的各种应用程序,当用户将鼠标悬停在托盘图标上时,会显示一个...

    VC++ 添加系统托盘图标及菜单

    1. **系统托盘图标**:在VC++中,通过创建一个`CWinApp`或`CFrameWnd`的子类,并重写`OnCreate`函数,可以实现系统托盘图标的添加。首先,需要调用`Shell_NotifyIcon`函数,这个函数来自Windows Shell API,用于向...

    托盘图标支持演示.rar

    在IT领域,托盘图标(Tray Icon)通常指的是应用程序在操作系统任务栏通知区域显示的小图标。这种功能常用于后台运行的应用程序,以便用户能够快速访问或监控程序的状态,而无需将其窗口保持打开状态。"托盘图标支持...

    实现系统托盘图标

    1. 创建系统托盘图标:首先,需要创建一个`NOTIFYICONDATA`结构体,用于存储托盘图标的属性,如图标、提示文本等。然后,调用`Shell_NotifyIcon`函数将图标添加到托盘区域。 2. 定义右键菜单:右键点击托盘图标时弹...

    在PB中使用托盘图标

    3. **托盘图标行为**:你可以控制托盘图标的其他行为,比如通过`TrayIcon.BalloonTip`方法显示气泡提示,或者设置`TrayIcon.Visible`属性控制图标是否可见。若想让图标闪烁以吸引用户注意,可以使用`TrayIcon.Blink`...

    mfc中托盘图标编程方法

    ### MFC中托盘图标编程方法详解 #### 一、引言 系统托盘区(也称为任务栏通知区)是Windows操作系统中的一个重要组成部分,它主要用于显示小程序的图标,以便用户能够快速访问主程序或在特定时间加载主程序。本文...

    VB编程源代码 24运行时设置系统托盘图标及提示

    VB编程源代码 24运行时设置系统托盘图标及提示VB编程源代码 24运行时设置系统托盘图标及提示VB编程源代码 24运行时设置系统托盘图标及提示VB编程源代码 24运行时设置系统托盘图标及提示VB编程源代码 24运行时设置...

    VC+MFC 托盘图标闪烁与消息提示

    本文将深入探讨如何使用VC+MFC实现托盘图标闪烁、快捷键支持、右键菜单以及消息提示等功能。 首先,托盘图标(Tray Icon)是指在系统任务栏右下角的通知区域显示的小图标,它可以帮助应用程序在后台运行时与用户...

    托盘图标支持静态

    通过这些文件,开发者可以学习到如何在易语言环境下实现托盘图标功能,包括创建托盘图标、设置图标样式、响应用户的点击事件、使用气球提示以及将程序最小化到托盘等操作。这对于开发具有系统托盘功能的应用程序至关...

    隐藏右下角 托盘图标

    总结来说,隐藏右下角的托盘图标在MFC工程中涉及到对CTrayIcon类的使用,包括创建对象、设置图标和提示、以及处理用户交互。通过学习和实践这部分知识,开发者能够更好地控制Windows应用程序在任务栏上的表现,提升...

Global site tag (gtag.js) - Google Analytics