有的網友開發了自己的托盤類,實現起來略微煩瑣。在這裡我向大家推薦一個實現簡單而十分有效的托盤類(是我在一本書中學來的)。
1、把TrayIcon.cpp和TrayIcon.cpp拷貝到你的項目目錄,並添加到項目中。
2、在DemoDlg.h中加入#include “TrayIcon.h”
3、通過類向導向類CDemoDlg添加成員變量CTrayIcon m_CTrayIcon;
4、建立菜單資源,使其ID為:IDR_DEMO,設計菜單:
向demo1和exit添加事件處理程序:
void CDemoDlg::OnFileDemo1()
{
ShowWindow(SW_SHOW);
m_TrayIcon.RemoveIcon();
}
void CDemoDlg::OnFileExit()
{
m_TrayIcon.RemoveIcon();
OnCancel();
}
5、在DemoDlg.cpp中自定義消息 #define WM_ICON_NOTIFY WM_USER+10,並在聲明消息處聲明消息處理函數:
BEGIN_MESSAGE_MAP(CDemoDlg, CDialog)
......
ON_MESSAGE(WM_ICON_NOTIFY, OnTrayNotification)
……
END_MESSAGE_MAP()
在類CDemoDlg中增加成員函數:
LRESULT OnTrayNotification(WPARAM wParam,LPARAM lParam);
實現部分:
LRESULT CDemoDlg::OnTrayNotification(WPARAM wParam,LPARAM lParam)
{
return m_TrayIcon.OnTrayNotification(wParam,lParam);
}
6、在對話框添加“開始”按扭,並雙擊“開始”按扭編輯處理程序:
void CDemoDlg::OnBnClickedButton1()
{
m_TrayIcon.Create(this,WM_ICON_NOTIFY,"鼠標指向時顯示",m_hIcon,IDR_DEMO); //構造
ShowWindow(SW_HIDE); //隱藏窗口
}
7、可以靈活使用其它類成員函數。如:SetIcon改變圖標,可以通過Timer消息實現托盤圖標動畫效果。
8、刪除托盤圖標:m_TrayIcon.RemoveIcon();
本文配套源碼