首页 > 程序开发 > 软件开发 > C++ >

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

2017-09-21

C++使用TTrayIcon来制作系统托盘动态图标和气泡提示。TTrayIcon 的主要属性:一 TTrayIcon->Icon。指定托盘图标, 有几种用法:1、设计时选择;

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()。

相关文章
最新文章
热点推荐