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