VB建立QQ托盘闪烁效果

用过QQ的都知道,当我们有新的信息时,在屏幕的右下角都会有一个小图标闪烁来告诉你有新的信息来哦,现在看看用VB怎么来达到这个效果吧。

建立一个托盘我们要用到Windwos API—Shell_NotifyIcon(具体用法点击这里),现在我们看看如何用这个API来达到我们要的效果吧(点击这里下载源程序)。

制作界面:

在Form上放两个图片框、一个按钮、一个计时器。他们的属性如下:

组件名
属性
Form
  • StartUpPosition:2
Picture1、Picture2
  • AutoSize:True
  • VIsible:False
Timer1
  • Enabled:False
  • Interval:500(图标的闪烁时间间隔,可自己改为自己所要值)
Command1
  • Caption:开始

用Pictrue1、Pictrue2的Pictrue为两个图片框加入你要用来变化的两张图片(本例用的是在Form_Load中载入)。

在窗体模块中声明API、一些常量和一个记录型变量:

Option Explicit

Private Type NOTIFYICONDATA
        cbSize As Long    ' NOTIFYICONDATA类型的大小
        hWnd As Long      ' 应用程序窗体的名柄
        uId As Long    ' 应用程序图标资源的ID号
        uFlags As Long    ' 使那些参数有效它是以下枚举类型中的'NIF_MESSAGE、NIF_ICON、NIF_TIP三组的组合
        ucallbackMessage As Long     ' 鼠标移动时把此消息发给该图标的窗体
        hIcon As Long    '托盘用到的图标
        szTip As String * 64    ' 当鼠标在图标上时显示的文本
End Type

Const NIM_ADD = &H0   '加入托盘
Const NIM_MODIFY = &H1    '修改托盘(本例中重点用)
Const NIM_DELETE = &H2    '删除托盘
Const NIF_MESSAGE = &H1
Const NIF_ICON = &H2
Const NIF_TIP = &H4
Const WM_MOUSEMOVE = &H200

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Long

Dim t As NOTIFYICONDATA

在Form的Load事件中加入如下代码:

'载入图片
Picture1.Picture = LoadPicture(App.Path & "\1.ico")
Picture2.Picture = LoadPicture(App.Path & "\2.ico")
t.cbSize = Len(t)
t.hWnd = Form1.hWnd
t.uId = 1
t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
t.ucallbackMessage = WM_MOUSEMOVE     '触发鼠标移动消息,在本例中没有应用到
t.hIcon = Picture1.Picture     '托盘的图标
t.szTip = "QQ闪烁效果" & Chr(0)      '鼠标放在托盘上时的文本
Shell_NotifyIcon NIM_ADD, t     '显示托盘图标

在Command1的Click事件中加入如下代码:

Static b1 As Boolean     '定义一个布尔型变量用于开关作用
b1 = Not b1
Timer1.Enabled = b1     '用Timer1来控制图标的闪烁
If Not b1 Then
       Command1.Caption = "开始"
Else
       Command1.Caption = "停止"
End If

为Timer1的Timer的事件加入如下代码:

Static b2 As Boolean   ' 定义一个布尔型变量用于开关作用,当为True时托盘图标为Picture2图片,为False时为Picture1的图片
b2 = Not b2
If b2 Then
       t.hIcon = Picture2.Picture     '托盘图标为Picture2的图片
Else
       t.hIcon = Picture1.Picture       '托盘图标为Picture1的图片
End If
Shell_NotifyIcon NIM_MODIFY, t     '修改托盘图标

退出程序时要删除托盘,所以在Form_Unload中加入如下代码:

Shell_NotifyIcon NIM_DELETE, t   '删除托盘

好了,一个QQ图标的闪烁效果就做好了,自己去试试吧,为自己的程序添色增彩。

Copyright ?2005-2008 All rights reserved. www.17zixue8.com 版权所有    赣ICP备07501614号        完美兵团会员待遇说明    站主QQ:335759285