TIcon *MyIcon = new TIcon;
MyIcon->LoadFromFile(ExtractFilePath(ParamStr(0))+/"////Day 1.ico/");
TNotifyIconData IconData;
//是自訂的NotifyIcon變數的大小
IconData.cbSize = sizeof(IconData);
//希望托盤程式產生的訊息有哪個表單來處理就讓Wnd指向那個表單控制代碼
IconData.hWnd = MainForm->Handle;
//區別其他系統托盤小程式的ID
IconData.uID = 100;
//托盤表徵圖的控制代碼,根據這個控制代碼你就可以增加、修改、刪除表徵圖
IconData.hIcon = MyIcon->Handle;
/*uFlags : 一個標誌位,它表示當前所建立的托盤程式具有哪些性質
NIF_ICON 表示當前所設定的表徵圖(即hIcon的值)是有效
NIF_MESSAGE 表示當前所設定的系統訊息(即uCallBackMessage的值)是有效
NIF_TIP 表示當前所設定的提示條(即szTip的值)是有效
*/
IconData.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
/* uCallBackMessage : 這是7個部分裡面最重要的一個。這裡指定一個回調訊息,也就是說這裡定義一個訊息名,當你單擊或者右擊托盤表徵圖的時候就會向你在Wnd所指向的表單發送一個在uCallBackMessage中定義的訊息名,然後你在程式中定義一個訊息出來函數來處理這個訊息。這樣就把Windows關於訊息的整套流程都處理好了*/
IconData.uCallbackMessage = WM_USER+100;
//szTip就是當你的滑鼠放到工作列托盤的小表徵圖上的時候彈出來的提示資訊
strcpy(IconData.szTip,/"網址管理專家 單擊左鍵顯示表單/");
Shell_NotifyIcon(NIM_ADD,&IconData);
SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
同時在主表單中TIcon對象建立訊息事件:
public:
void virtual __fastcall IconClick(TMessage& Msg);
bool SystemShutDown(UINT uFlag);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_USER+100,TMessage,IconClick)
END_MESSAGE_MAP(TForm)
//-----------------------------------------------------------------
void __fastcall TMainForm::IconClick(TMessage& Msg)
{
TPoint po;
if(Msg.LParam==WM_LBUTTONDOWN)
{
this->Show();
}
if(Msg.LParam==WM_RBUTTONUP)
{
GetCursorPos(&po); //擷取當前滑鼠的座標值
AdvPopupMenu1->Popup(po.x,po.y);
}
}
//-------------------------------------------------------------------
結束時:
TNotifyIconData IconData;
IconData.cbSize = sizeof(IconData);
IconData.hWnd = MainForm->Handle;
IconData.uID = 100;
Shell_NotifyIcon(NIM_DELETE,&IconData);
delete MyIcon;