如何将窗口最小化到系统托盘

本文介绍如何在VB中创建、修改和删除系统托盘图标,并处理托盘消息。通过使用Shell_NotifyIcon API函数,结合NOTIFYICONDATA结构,实现托盘图标的功能。当用户点击托盘图标时,可以弹出菜单、显示或隐藏窗口。文章还展示了如何通过SetWindowLong和CallWindowProc函数来处理消息循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写托盘程序主要解决两个问题:
  (1)创建、修改、删除托盘;
  (2)如何对托 盘接收到的消息进行处理。
  这就要用到几个Windows API函数。
  首先,Shell_NotifyIcon是用于托盘的Shell API。该API用到一个NOTIFYICONDATA结构.
  Type NOTIFYICONDATA
    cbSize As Long '该结构所占字节数
    hwnd As Long '接收托盘图标消息的窗口指针
    uID As Long '由程序定义的图标识别符,因为有的程序有多个图标
     uFlags As Long '对托盘图标操作的标志,包括添加、删除、修改
     uCallbackMessage As Long '标志应用程序的消息
    hIcon As Long '托盘图标指针
    szTip As String * 64 '当鼠标指到托盘图标时提示字符串
  End Type
  其次,应该考虑怎样在VB中接收、处理托盘的消息(双击、单击、左键、右 键)。C++、Delphi等语言对消息循环的处理较简单,但在VB中处理消息循环时必须应用Win32的SetWindowLong、CallWindowProc这两个API函数。SetWindowLong函数利用 GWL_WNDPROC 索引来创建窗口类的子类(窗口类是用来创建窗口的),它使用AddressOf关键字和回调函数(WindowProc)来截取消息并根据消息来执行相应的功能,如窗口的最大化、最小化、隐藏、退出等。CallWindowProc函数调用原窗口类缺省的指针,程序最后退出时可通过SetWindowLong来关闭子类,重新使原来的Windows过程成为回调函数。
  本程序项目包括一个模块和一个窗体
  1、模块源代码为:
  Option Explicit '强制定义每个使用的变量
  Type NOTIFYICONDATA '定义结构NOTIFYICONDATA
    cbSize As Long
    hwnd As Long
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值