Windows 95以及后来的Windows版本允许你将程序图标放入系统托盘。所谓系统托盘,通常指的是屏幕右下方显示时间,音量等图标的那个区域。托盘图标通常可以执行一些快捷操作,如窗口隐藏时通常最小化到托盘区域,用户可以单击鼠标左键显示程序窗口界面,右键单击托盘图标通常会弹出快捷菜单进行一些快捷操作。
在MFC中访问托盘图标是通过Shell_NotifyIcon函数和NOTIFYICONDATA结构实现。以下简单说明其实现步骤:
( 1 ) 添加托盘图标右键菜单资源(可以动态创建亦可利用VC自带的菜单编辑器),指定ID为 IDR_TUOPAN_MENU
( 2 ) 初始化托盘图标:
NOTIFYICONDATA tnd; //NOTIFYICONDATA 结构声明
tnd.cbSize=sizeof(NOTIFYICONDATA); //结构体的大小,以字节为单位。
tnd.hWnd=this->m_hWnd; //窗口句柄,标示的窗口用来接收与托盘图标相关的消息。
tnd.uID=IDR_MAINFRAME; //应用程序定义的任务栏图标的标识符。Shell_NotifyIcon函数调用时,hWnd和uID成员用来标示具体要操作的图标
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; //指示具体哪些其他成员为合法数据
tnd.uCallbackMessage=WM_LIBEN; //应用程序定义的消息标示,当托盘图标区域发生鼠标事件或者使用键盘选择或激活图标时,系统将使用此标示向由hWnd成员标示的窗口发送消息。
tnd.h
在MFC中访问托盘图标是通过Shell_NotifyIcon函数和NOTIFYICONDATA结构实现。以下简单说明其实现步骤:
( 1 ) 添加托盘图标右键菜单资源(可以动态创建亦可利用VC自带的菜单编辑器),指定ID为 IDR_TUOPAN_MENU
( 2 ) 初始化托盘图标:
NOTIFYICONDATA tnd; //NOTIFYICONDATA 结构声明
tnd.cbSize=sizeof(NOTIFYICONDATA); //结构体的大小,以字节为单位。
tnd.hWnd=this->m_hWnd; //窗口句柄,标示的窗口用来接收与托盘图标相关的消息。
tnd.uID=IDR_MAINFRAME; //应用程序定义的任务栏图标的标识符。Shell_NotifyIcon函数调用时,hWnd和uID成员用来标示具体要操作的图标
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; //指示具体哪些其他成员为合法数据
tnd.uCallbackMessage=WM_LIBEN; //应用程序定义的消息标示,当托盘图标区域发生鼠标事件或者使用键盘选择或激活图标时,系统将使用此标示向由hWnd成员标示的窗口发送消息。
tnd.h