教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> VB >> 编程技巧 >> VB 托盘程序详解 RSS订阅
VB 托盘程序详解
VB 托盘程序详解(1)
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

   很多软件运行时会在系统托盘区(就是桌面右下角显示时间的区域)出现一个小图标,它作为程序运行的一个标志,我们可以通过使用小图标所弹出的菜单来控制应用程序的状态。本例就给出了一个功能比较完整的托盘程序,我们可以看到怎样用API函数Shell_NotifyIcon来添加、删除、更改托盘图标;而且例中还演示了为托盘图标添加右键菜单和浮动提示的方法。
为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码:
'====================================================================================================
'====================================================================================================
'---------------------------------------------
'           使用系统托盘程序演示
'程序说明:
'   这是一个比较完整的使用系统托盘的程序实例,包括
'了:添加托盘图标,删除托盘图标,动态改变托盘图标,
'为托盘图标添加浮动提示信息,实现托盘图标的鼠标右键
'菜单等内容。
'-------名称-------------------作用------------
'       Form1                   主窗体
'       mnuFile,mnuFileExit     文件菜单,菜单项
'       mnuTray,mnuTrayClose... 托盘区右键菜单,菜单项
'---------------------------------------------

Option Explicit

'LastState变量的作用是标示主窗体原有状态
Public LastState As Integer

'【VB声明】
'  Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'【说明】
'  调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum,
'  SendMessageByString是该函数的“类型安全”声明形式

'【返回值】
'  Long,由具体的消息决定

'【参数表】
'  hwnd -----------  Long,要接收消息的那个窗口的句柄

'  wMsg -----------  Long,消息的标识符

'  wParam ---------  Long,具体取决于消息

'  lParam ---------  Any,具体取决于消息
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'表示发送的是系统命令
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MOVE = &HF010&
Private Const SC_RESTORE = &HF120&
Private Const SC_SIZE = &HF000&

'当主窗体加载时
Private Sub Form_Load()
   
    '窗体的WindowState属性,返回或设置一个值,该值用来指定在运行时窗体窗口的可视状态
    'vbNormal    0   (缺省值)正常 。
    'VbMinimized 1   最小化(最小化为一个图标)
    'VbMaximized 2   最大化(扩大到最大尺寸)
    If WindowState = vbMinimized Then
        LastState = vbNormal
    Else
        LastState = WindowState
    End If
   
    '将图标添加到托盘的函数,参见模块中的解释
    '注意了这是从主程序到模块的入口,本例中并没有直接调用Shell_NotifyIcon函数
    AddToTray Me, mnuTray
   
    SetTrayTip "托盘图标演示,点击右键弹出菜单"
End Sub

'在主窗体Form1大小改变时,相应改变右键菜单mnuTray的菜单项的可用属性Enabled
Private Sub Form_Resize()
    Select Case WindowState
        
        '如果窗体最小化了,把菜单项“最大化”“恢复”设为可用,
        '而把“最小化”“移动”“大小”三项设为不可用.
        '如果这时在托盘图标上点击鼠标右键,会发现不可用项变为灰色
        Case vbMinimized
            mnuTrayMaximize.Enabled = True
            mnuTrayMinimize.Enabled = False
            mnuTrayMove.Enabled = False
            mnuTrayRestore.Enabled = True
            mnuTraySize.Enabled = False
        
        '窗体最大化时
        Case vbMaximized
            mnuTrayMaximize.Enabled = False
            mnuTrayMinimize.Enabled = True
            mnuTrayMove.Enabled = False
            mnuTrayRestore.Enabled = True
            mnuTraySize.Enabled = False
        
        '一般状态下
        Case vbNormal
            mnuTrayMaximize.Enabled = True
            mnuTrayMinimize.Enabled = True
            mnuTrayMove.Enabled = True
            mnuTrayRestore.Enabled = False
            mnuTraySize.Enabled = True
    End Select

    If WindowState <> vbMinimized Then LastState = WindowState

来源:www.upschool.com.cn
作者:hulqi
关键字:VB,托盘,系统托盘
发表日期:2007-2-8 10:44:05

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:注册表操作函数集   下一篇:


共5页 9 7 [1] [2] [3] [4] [58 :>

本文的相类似文章
  • VB 托盘程序详解
  • 用VB做进程管理器
  • 硬盘序列号计算软件注册码 VB
  • 想不到的VB指针用法{Visual Basic6.0}
  • VB中shell的用法
  • 在VB中清除cookie和cache(实例)
  • VB 编程技巧
  • ASP页面内VBScript和JScript的交互
  • VB下Jmail邮件完整使用案例
  • VB调用Oracle返回数据集
  • 网友评论 查看本文全部评论
    笔 名: *
    评 论:
    最多500字。当前字数:0
    联系方式:
    验证码:
    在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com