在 Borland C++ Builder 5.0 完整安裝後,Samples 元件頁提供 TrayIcon 元件,封裝系統匣所需的 Windows API,無需撰寫程式碼即可快速建立系統匣應用程式。
| 屬性 | 說明 |
|---|---|
| Animate | 設為 true 時,依 Icons 循序切換圖示產生動畫效果 |
| AnimateInterval | 圖示切換間隔(毫秒) |
| Hide | true 時最小化隱藏工作列標題列 |
| Hint | 滑鼠游標停留時顯示的提示文字 |
| IconIndex | 當前顯示圖示索引 |
| Icons | 圖示來源(通常指定 ImageList 元件) |
| PopupMenu | 右鍵彈出選單(指定 PopupMenu 元件) |
| PopupMenuOn | 觸發彈出選單的滑鼠動作 |
| RestoreOn | 還原視窗的滑鼠動作 |
| Visible | true 時在工作列右側顯示圖示 |
| 常數 | 說明 |
|---|---|
| imClick | 單擊 |
| imDoubleClick | 雙擊 |
| imLeftClickUp | 左鍵單擊放開 |
| imLeftDoubleClick | 左鍵雙擊 |
| imMouseDown | 按下滑鼠鍵 |
| imMouseUp | 按下並放開 |
| imNone | 無動作 |
| imRightClickUp | 右鍵單擊放開 |
| imRightDoubleClick | 右鍵雙擊 |
TrayIcon、PopupMenu、ImageList 三個元件,保留預設名稱。TrayIcon1 屬性:| 屬性 | 值 |
|---|---|
| Animate | true |
| AnimateInterval | 1000 |
| Hide | true |
| Hint | Tray示範程式 |
| IconIndex | 0 |
| Icons | ImageList1 |
| PopupMenu | PopupMenu1 |
| PopupMenuOn | imRightClickUp |
| RestoreOn | imDoubleClick |
| Visible | true |
PopupMenu1 設計選單項目。ImageList1 匯入 .ico 或 .bmp 圖片。若不使用元件,可直接呼叫 Shell_NotifyIcon():
#define WM_NOTIFYICON WM_USER + 5
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NOTIFYICON, TMessage, NotifyIcon)
END_MESSAGE_MAP(TForm)
void __fastcall TMainForm::NotifyIcon(TMessage msg)
{
POINT MousePos;
switch (msg.LParam) {
case WM_RBUTTONUP:
// 顯示右鍵選單
break;
}
}
void __fastcall TMainForm::TrayMessage(DWORD dwMessage)
{
NOTIFYICONDATA tnd;
tnd.cbSize = sizeof(NOTIFYICONDATA);
tnd.hWnd = Handle;
tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnd.uCallbackMessage = WM_NOTIFYICON;
tnd.hIcon = myIcon->Handle;
lstrcpyn(tnd.szTip, "my TrayIcon", sizeof(tnd.szTip));
return Shell_NotifyIcon(dwMessage, &tnd);
}
完整範例原始碼位於安裝目錄 CBuilder5\Examples\Apps\TrayIcon;純 API 版本參考 CBuilder5\Examples\Controls\Traydemo。