看到火哥给他的程序加上了系统托盘,我的没有很是不爽。于是花了几分钟找了些资料,给自己的也加上了系统托盘。现在将我的实现步骤分享一下。
先来解释下什么是系统托盘:其实准确的说法应该是任务栏通知区域。系统托盘区可以看着是任务栏下的一个子工具栏。(任务栏最右面)。一般像QQ,酷狗,杀软,百度云等很多程序都会在系统托盘里显示图标。
我们需要完成的任务:
1.隐藏任务栏的程序图标。
2.系统托盘创建图标
3.托盘图标右键菜单及菜单消息处理函数
4.添加托盘消息处理函数
5.销毁托盘图标
1.隐藏任务栏的程序图标。
这个是最简单的,我们只需要在主窗口的OnInitDialog()函数里加上 ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);修改主窗口的属性就可以了。
2.系统托盘创建图标
1.添加系统托盘首先要了解一个结构体,_NOTIFYICONDATA ,下面列出了这个结构体的成员,并对我们需要关注的成员加上了注释。
/***该系统需要处理的任务栏状态区的消息***/
typedef struct _NOTIFYICONDATA {
DWORD cbSize; //结构体的大小
HWND hWnd; //窗口的句柄
UINT uID; //应用程序定义的任务栏图标的标识符
UINT uFlags; //此成员表明具体哪些其他成员为合法数据
UINT uCallbackMessage; //自定义的消息标识
HICON hIcon; //托盘图标的句柄
TCHAR szTip[64];