叶帆工作室

嵌入式开发爱好者(十年开发经验,精通C/C++/VC/VB/C#...)

刘洪峰ID:yefanqiu
521374次访问,排名81好友0人,关注者169
微软MVP / CSDN 2008十大MVB/MSDN中文技术论坛版主
yefanqiu的文章
原创 216 篇
翻译 0 篇
转载 3 篇
评论 1088 篇
叶帆的公告
本博客原创文章,作者保留一切权利,需经作者同意后方可转载,转载时 请注明[叶帆工作室]及文章链接。yefan@vip.sina.com
【简介】叶帆[微软MVP]
【文章】叶帆文章列表
【软件】叶帆共享软件列表
最近评论
jacle169:峰哥, micro Framework3.0 beta出了,我已经装到vs08里了,但是你的sdk不能注册到vs08里,你帮帮忙改个vs08 里能用的sdk吧,谢谢.
赵广涛:高手帮帮忙,VB画有两个Y轴的曲线图怎么画?
sfweb2008:老兄:
你真厉害!
你有VB Api函数功能及用法详解吗?我有好多这方面的问题不是很明白!还请指教,谢谢!

我的邮箱xsdjxx@tom.com
xweil:谢谢你的推荐,享用受益中
changesway:很有收获!谢谢
文章分类
收藏
    相册
    叶帆照片
    【叶帆软件】
    [01]VB源码之友(V2.1.548)
    [02]API浏览器.net(V5.0)
    [03]叶帆成语词典(V2.0.8)
    [04]叶帆密码库(V1.2.8)
    【叶帆资源】
    DAO 2.0引擎
    叶帆快速通道
    Windows Embedded 专题
    中文MSDN
    叶帆圈子--工业自动化
    叶帆工作室(博客园)
    叶帆工控--工业自动化
    叶帆群组--工业应用开发
    微软中文技术论坛
    瑞康社区论坛
    叶帆友情链接
    张欣
    枕善居
    莫依
    葛涵涛
    郑建
    陈辉
    马宁
    马骐
    魏涛序
    黎波
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 托盘图标提示收藏

    新一篇: VBScript脚本运用(脚本程序与宿主程序的交互) | 旧一篇: VB能做什么?

    '*************************************************************************
    '**模 块 名: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

    发表于 @ 2004年10月14日 10:02:00|评论(loading...)|编辑

    新一篇: VBScript脚本运用(脚本程序与宿主程序的交互) | 旧一篇: VB能做什么?

    评论

    #yefanqiu 发表于2004-10-14 10:07:00  IP: 221.217.146.*
    源码下载地址:http://www.bjjr.com.cn/YeFan/SourceCode/NotifyInfo.rar
    #libralibra 发表于2004-10-14 13:48:00  IP: 61.48.134.*
    高手,pf!
    你的源代码我都下载了,好好学习!
    谢谢分享!
    #废客泉 发表于2004-11-22 02:23:00  IP: 220.248.166.*

    Select Case lParam
    Case WM_RBUTTONUP
    ' 右键单击图标是运行这里的代码, 可以在这里添加弹出右键菜单的代码
    PopupMenu frmTest.asdf
    Case WM_LBUTTONDBLCLK
    ' 左键单击 显示窗体


    这代码不能加右键弹出菜单,请尽修复这个错误!!!
    谢~~

    qq : 23787050
    #faib 发表于2005-03-24 14:37:00  IP: 220.163.24.*
    为什么运后就退出了
    #MDIForm 发表于2005-04-20 23:32:00  IP: 221.237.52.*
    MDIForm
    不能ShowNotifyIcon ...
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 叶帆