当前位置:编程学习 > VB >>

如何用VB实现象QQ右下角的来消息闪动QQ图标功能?用于内网办公系统

如何用VB实现类似QQ右下脚的来消息闪动QQ图标的功能?用于内网办公系统?
我做了个内内网办公系统,想实现某部门接收到其他部门发的通知时提示有消息来了.有个图标在右下角闪,点击后打开消息内容.

没思路. 判断有消息了之后,然后加载另外一个图标 用Timer不停地切换图形 用VB实现托盘动画图标

  现在,程序员把自己开发的程序的静态图标放入托盘已不是难事,使用Visual C++、Visual Basic、Delphi等编程语言,借助于Windows API函数(Shell_NotifyIcon)可以很容易地实现对托盘图标的操作。 
那么,如何在托盘中实现动态图标呢?本文将通过一个在托盘中交替显示笑脸/哭脸的实例来介绍用VB实现托盘中动画图标的方法和步骤。 

  1.可视部分设计 

  新建一个标准EXE项目,在窗体中设置如下控件: 

  ⑴一个计时器(命名为timer1),其属性Enabled=False、Interval=100; 

  ⑵一个弹出选单(命名为mMyPopMenu),设计时清除其“可视”检查框(右单击托盘动画图标时弹出); 

  ⑶若干图画框(本例为2个),这些图画框名称相同(例如picture1),其Index属性值依次为0、1、2、...,Visible属性值均为False,Picture属性设置为循环显示的图标文件,如图1所示; 

  图1 

  ⑷其它控件,根据程序实际功能需要设置。 

  2.编写程序代码 

  ⑴在窗体的声明部分给出如下声明: 

  Private Type NOTIFYICONDATA 

  cbSize As Long 

  注释:指定NOTIFYICONDATA结构长度 

  hWnd As Long 注释:指定接收回调消息的窗体或控件的句柄 

  uId As Long 

  注释:指定放入托盘中的图标的ID标识 

  uFlags As Long 

  注释:指定要绘制的图标的属性 

  ucallbackMessage As Long 

  注释:指定一条自定义的回调消息 

  hIcon As Long 

  注释:指定要显示于托盘中的图标的句柄 

  szTip As String * 64 

  注释:指定图标的提示信息 

  End Type 

  Private Const NIF_ICON = &&H2 

  Private Const NIF_MESSAGE = &&H1 

  Private Const NIF_TIP = &&H4 

  Private Const NIM_ADD = &&H0 

  Private Const NIM_DELETE = &&H2 

  Private Const NIM_MODIFY = &&H1 

  Private Const WM_MOUSEMOVE = &&H200 

  Private Declare Function Shell_NotifyIcon Lib "shell32" _ 

   Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, _ 

   pnid As NOTIFYICONDATA) As Boolean 

  Dim tb As NOTIFYICONDATA 

  ⑵窗体加载时把图标放入托盘: 

  Private Sub Form_Load() 

    mMyPopMenu.Visible = False 

    注释:使弹出选单隐藏 

    mHide.Enabled = False 

  With tb 

  .cbSize = Len(tb) 

  .hWnd = Picture1(0).hWnd 

  .uId = 1&& 

  .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE 

  .ucallbackMessage = WM_MOUSEMOVE 

     .hIcon = Picture1(0).Picture 

     .szTip = "托盘动画图标演示" && Chr$(0) 

    End With 

    Shell_NotifyIcon NIM_ADD, tb 

    Timer1.Enabled = True 

    Me.Hide 

    App.TaskVisible = False 

  End Sub 

  ⑶计时器每触发一次就修改一下托盘中的图标: 

  Private Sub timer1_Timer() 

    Static i As Integer 

    i =(i+1) Mod 2 注释:2 为图画框的个数 

    With tb 

     .cbSize = Len(tb) 

     .hWnd = Picture1(0).hWnd 

     .uId = 1&& 

     .uFlags = NIF_ICON 

     .hIcon = Picture1(i).Picture 

    End With 

    Shell_NotifyIcon NIM_MODIFY, tb 

    Timer1.Enabled = True 

  End Sub 

  ⑷响应托盘中图标的鼠标事件: 

  Private Sub picture1_MouseMove(Index As Integer, _ 

   Button As Integer, Shift As Integer, _ 

   X As Single, Y As Single) 

    If X = &&H1E3C Then 

      Me.PopupMenu mMyPopMenu 

    End If 

  End Sub 

  ⑸窗体卸载时删除托盘中的图标: 

  Private Sub Form_Unload(Cancel As Integer) 

    Timer1.Enabled = False 

    With tb 

     .cbSize = Len(tb) 

     .hWnd = Picture1(0).hWnd 

     .uId = 1&& 

    End With 

    Shell_NotifyIcon NIM_DELETE, tb 

  End Sub 

  ⑹对弹出选单Click事件的响应代码: 

  根据选单的具体功能而定 将一组图标放入imagelist控件里,循环加载,直到点击响应 winsock
引用 xx楼 xx的回复:
PS:你的头像很和谐……
 
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,