我用如下代码,是程序在最小化时缩到系统栏,成为一个图标。
我想让该图标响应鼠标单击(弹出菜单)、双击事件,该怎么办?
BOOL CTrayIcon::TaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hwnd;
nid.uID = uID;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage = WM_TRAYICONCLICK;
nid.hIcon = hicon;
if (lpszTip)
lstrcpyn(nid.szTip, lpszTip, sizeof(nid.szTip));
else
nid.szTip[0] = '\0';
res = Shell_NotifyIcon(NIM_ADD, &nid);
if (hicon)
DestroyIcon(hicon);
return res;
}BOOL CTrayIcon::TaskBarDeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
res = Shell_NotifyIcon(NIM_DELETE, &tnid);
return res;
}
//添加系统Icon
void CTrayIcon::AddSystemIcon()
{
HICON hIcon = LoadIcon((AfxGetApp()->m_hInstance),
MAKEINTRESOURCE(IDR_MAINFRAME));
char tip[128];
wsprintf(tip, "WP-VDRS网络中心服务器");
TaskBarAddIcon(AfxGetMainWnd()->m_hWnd, IDR_MAINFRAME, hIcon, tip);
}
//删除系统Icon
void CTrayIcon::RemoveSystemIcon()
{
TaskBarDeleteIcon(AfxGetMainWnd()->m_hWnd, IDR_MAINFRAME);
}
我想让该图标响应鼠标单击(弹出菜单)、双击事件,该怎么办?
BOOL CTrayIcon::TaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hwnd;
nid.uID = uID;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage = WM_TRAYICONCLICK;
nid.hIcon = hicon;
if (lpszTip)
lstrcpyn(nid.szTip, lpszTip, sizeof(nid.szTip));
else
nid.szTip[0] = '\0';
res = Shell_NotifyIcon(NIM_ADD, &nid);
if (hicon)
DestroyIcon(hicon);
return res;
}BOOL CTrayIcon::TaskBarDeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
res = Shell_NotifyIcon(NIM_DELETE, &tnid);
return res;
}
//添加系统Icon
void CTrayIcon::AddSystemIcon()
{
HICON hIcon = LoadIcon((AfxGetApp()->m_hInstance),
MAKEINTRESOURCE(IDR_MAINFRAME));
char tip[128];
wsprintf(tip, "WP-VDRS网络中心服务器");
TaskBarAddIcon(AfxGetMainWnd()->m_hWnd, IDR_MAINFRAME, hIcon, tip);
}
//删除系统Icon
void CTrayIcon::RemoveSystemIcon()
{
TaskBarDeleteIcon(AfxGetMainWnd()->m_hWnd, IDR_MAINFRAME);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货