系统托盘功能如下图所示,是指在操作系统工具栏右侧下方显示的应用图标所承载的部分系统功能。
系统托盘的主要功能包含:创建托盘图标、响应托盘事件、删除托盘图标等功能。下面我们来逐步完成相关功能的实现。
系统托盘一般在窗口主程序最小化时出现,在窗口主程序恢复时删除,此次我们先通过菜单操作来实现显示和删除系统托盘图标的功能,最后再讲解Windows系统菜单消息如何截获处理。
创建/删除托盘图标
首先增加一个菜单菜单项
修改菜单项变量名称
添加菜单项响应函数
菜单响应函数代码如下:
#include <shellapi.h>
#include <wx/app.h>
NOTIFYICONDATA nid;
wxIcon ticon;
#define WM_TO_TRAY WM_USER+100
static const char *graph[] =
{
// columns rows colors chars-per-pixel
"16 16 4 2",
" c black",
". c #BA1825",
"X c gray100",
"UX c None",
// pixels
"UX. . . . . . . . . . . . . . UX",
". . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . ",
". . . . . . . . . . . X X . . . ",
". . . . . . . . . . . X X . . . ",
". . . . . . . . . . . X X . . . ",
". . . . . X X . . . . X X . . . ",
". . . . . X X . . . . X X . . . ",
". . . . . X X . X X . X X . . . ",
". . . . . X X . X X . X X . . . ",
". . . . . X X . X X . X X . . . ",
". . . . . X X . X X . X X . . . ",
". . . X X X X X X X X X X . . . ",
". . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . ",
"UX. . . . . . . . . . . . . . UX"
};
void SystemPanel::Onm_SystemTrayIconSelected(wxCommandEvent& event)
{
if(0==nid.uCallbackMessage)
{
//初始化系统托盘
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = wxTheApp->GetTopWindow()->GetHandle();
nid.uID = wxTheApp->GetTopWindow()->GetId () ;
nid.uFlags = NIF_ICON | NIF_MESSAGE |