一.托盘相关内容
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);