一.托盤相關(guān)內(nèi)容
1.Shell_NotifyIcon函數(shù)
BOOL Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA pnid
);
第一個(gè)參數(shù)dwMessage類型為DWORD,表示要進(jìn)行的動(dòng)作,它可以是下面的值之一:
NIM_ADD: 添加一個(gè)圖標(biāo)到任務(wù)欄。
NIM_MODIFY: 修改狀態(tài)欄區(qū)域的圖標(biāo)。
NIM_DELETE: 刪除狀態(tài)欄區(qū)域的圖標(biāo)。
NIM_SETFOCUS: 將焦點(diǎn)返回到任務(wù)欄通知區(qū)域。當(dāng)完成用戶界面操作時(shí),任務(wù)欄圖標(biāo)必須用此消息。例如,如果任務(wù)欄圖標(biāo)正
顯示上下文菜單,但用戶按下"ESCAPE"鍵取消操作,這時(shí)就必須用此消息將焦點(diǎn)返回到任務(wù)欄通知區(qū)域。
NIM_SETVERSION:指示任務(wù)欄按照相應(yīng)的動(dòng)態(tài)庫版本工作。
第二個(gè)參數(shù)pnid是NOTIFYICONDATA結(jié)構(gòu)的地址,其內(nèi)容視dwMessage的值而定。這個(gè)結(jié)構(gòu)在SHELLAPI.H文件中定義如下:
2.NOTIFYICONDATA結(jié)構(gòu)
typedef struct _NOTIFYICONDATA {
DWORD cbSize; // 結(jié)構(gòu)大小(sizeof struct),必須設(shè)置
HWND hWnd; // 發(fā)送通知消息的窗口句柄
UINT uID; // 圖標(biāo)ID ( 由回調(diào)函數(shù)的WPARAM 指定)
UINT uFlags;
UINT uCallbackMessage; // 消息被發(fā)送到此窗口過程
HICON hIcon; // 圖標(biāo)句柄
CHAR szTip[64]; // 提示文本
} NOTIFYICONDATA;
uFlags的值:
#define NIF_MESSAGE 0x1 // 表示uCallbackMessage 有效
#define NIF_ICON 0x2 // 表示hIcon 有效
#define NIF_TIP 0x4 // 表示szTip 有效
二.開發(fā)步驟
1.定義托盤結(jié)構(gòu)
在類里添加成員NOTIFYICONDATA nd;
給nd賦值:
2.添加托盤圖標(biāo)
Shell_NOtifyIcon(NIM_ADD,&nd);
3.加入托盤消息響應(yīng)函數(shù)
CPP:
LONG CbackdropDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{...}
頭文件的DECLARE_MESSAGE_MAP()之前添加:
afx_msg LONG OnNotifyIcon(WPARAM,LPARAM);
4.在退出之前刪除托盤圖標(biāo)
添加OnDestory事件:
:Shell_NotifyIcon(NIM_DELETE,&nd);