欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++使用TTrayIcon来制作系统托盘动态图标和气泡提示

程序员文章站 2022-03-31 09:29:09
TTrayIcon 的主要属性: 一.TTrayIcon->Icon 指定托盘图标, 有几种用法: 1、设计时选择; 2、把一个 TIcon 对象给它; 3、使用当...

TTrayIcon 的主要属性:

一.TTrayIcon->Icon

指定托盘图标, 有几种用法:

1、设计时选择;

2、把一个 TIcon 对象给它;

3、使用当前程序图标: TrayIcon1->Icon = Application->Icon;

TrayIcon1->SetDefaultIcon();

二.TrayIcon->Icons 与 TrayIcon1->IconIndex

TrayIcon->Icons 对应一个 TImageList,

用 TrayIcon->IconIndex 来指定使用 TImageList 中的第一个图标.

三.TrayIcon->PopupMenu

TrayIcon->PopupMenu 对应一个 TPopupMenu,

托盘图标一般少不了右键菜单.

四.TrayIcon->Visible

隐藏或显示系统托盘的图标; 虽简单、但关键, 因默认是 False.

五.TrayIcon->Hint

随鼠标指针的提示文本, 这是老式的, 下面有新型的.

TrayIcon->BalloonHint、BalloonTitle、BalloonFlags、BalloonTimeout

这都是新型的 Hint 相关的.

TrayIcon->BalloonHint: 文本

TrayIcon->BalloonTitle: 标题

TrayIcon->BalloonFlags: 图标样式

TrayIcon->BalloonTimeout: 停留时间

需要用 TrayIcon 的 ShowBalloonHint 方法启动显示

六.TrayIcon.Animate 与 TrayIcon1.AnimateInterval

TrayIcon 的新 Hint(BalloonHint)可设定动画.

TrayIcon->Animate: 这决定是否启用动画

TrayIcon1->AnimateInterval: 动画间隔时间

TTrayIcon 的主要事件:

OnAnimate: 写动画代码的事件

OnBalloonClick: 点击 BalloonHint 时…

OnClick: 单击图标时…

OnDblClick

OnMouseDown

OnMouseMove

OnMouseUp

TTrayIcon 还有两个方法, 前面都已提到了:

TTrayIcon->SetDefaultIcon;

TTrayIcon->ShowBalloonHint;

下面是两个实例:

一.“气泡提示”的制作

第一步:在窗体中放置 TrayIcon 控件( Additional 面板中可以找到)。

第二步:设置 TrayIcon 的 Icon 图标,载入一个 ICO 文件。

第三步:设置 TrayIcon 的 BalloonHint 为“ C++builder2010 高级控件应用”,设置 BalloonTitle 为“程序员2017合订本”。设置 Visible 为 True 。

第四步:双击窗体,在 OnCreate 事件中写入下面代码: TrayIcon1->ShowBalloonHint;

好了, F9 运行程序,一个“气泡提示”就会出现在图标上。属性中的 BalloonTimeout 是设置“气泡提示”多少秒后消失,默认是 3 秒。

二.动态图标

我们大家都知道,当有 QQ 消息时,托盘中会有一个闪烁图标,使用 TrayIcon 控件可以非常容易地实现这个功能。

使图标动起来,其实就是使用多个图标进行切换。

QQ 的闪烁图标,其实就是使用的两个图标来进行切换的,一个是头像图标,一个是空的图标。

下面我们就来模拟 QQ 头像闪烁功能:

第一步:在窗体上放置 ImageList 控件(在 Win32 面板中可以找到)。

第二步:设置 ImageList 控件的 Width 和 Height 属性为 32 ,然后双击 ImageList ,点击“ Add ”按钮添加图标文件。第一个添加的是要显示的图标,第二个添加一个空的图标(可以使用 Image Editor 新建一个 ICO 文件,然后直接保存即可得到一个空的图标。)。

第三步:设置 TrayIcon 的 Icons 属性为 ImageList1 (可以直接在列表中选择)。

第四步:在 Form1 的 OnFormShow 事件中加入下面的代码:

TrayIcon1->Animate = True;

TrayIcon1->AnimateInterval = 450;

当 Animate 为 True 时,将自动按 ImageList 控件中图标的顺序进行依次显示,形成动态效果。 AnimateInterval 为每隔多少时间显示下一个图标。如果要停止闪烁,将 Animate 设置为 False 即可。

需要提到的是:

在Samples组件页中有一个TCTrayIcon组件,它封装编写所需的Window API函数,他有几个属性是这个TrayIcon所没有的。

Hide设为true时,最小化时隐藏在任务栏上的标题栏; PopupMenuOn设置触发弹出菜单的鼠标操作

说明:imClick鼠标单击

imDoubleClick鼠标双击

imLeftClickUp单击鼠标左键,放开

imLeftDoubleClick双击鼠标左键

imMouseDown按下鼠标键

imMouseUp按下鼠标键,放开

imNone不设置鼠标操作

imRightClickUp单击鼠标右键,放开

imRightDoubleClick双击鼠标右键 RestoreOn设置恢复最小化到正常状态 最小化和隐窗体应该用: TrayIconMe->Minimize()来实现

还原窗体用:TrayIconMe->Restore()。