天天看點

使用C++builder的TTrayIcon制作系統托盤動态圖示和氣泡提示

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所沒有的。

  1. Hide設為true時,最小化時隐藏在工作列上的标題欄;
  2. PopupMenuOn設定觸發彈出菜單的滑鼠操作

    說明:imClick滑鼠單擊

    imDoubleClick滑鼠輕按兩下

    imLeftClickUp單擊滑鼠左鍵,放開

    imLeftDoubleClick輕按兩下滑鼠左鍵

    imMouseDown按下滑鼠鍵

    imMouseUp按下滑鼠鍵,放開

    imNone不設定滑鼠操作

    imRightClickUp單擊滑鼠右鍵,放開

    imRightDoubleClick輕按兩下滑鼠右鍵

  3. RestoreOn設定恢複最小化到正常狀态
  4. 最小化和隐窗體應該用: TrayIconMe->Minimize()來實作

    還原窗體用:TrayIconMe->Restore()。