使用下面的代码会导致有时图标在调用方法后立即保留在托盘中,removeIconFromTray
并且仅在用户移过托盘中的图标后才会消失。
void CMyDlg::addIconToTray()
{
static HICON hIcon = ::LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MYICON));
NOTIFYICONDATA data;
data.cbSize = sizeof(data);
data.hIcon = hIcon;
data.hWnd = m_hWnd;
strcpy (data.szTip, m_sTrayIconTip.c_str());
data.uFlags = NIF_ICON | NIF_TIP;
data.uID = (UINT)this;
Shell_NotifyIcon (NIM_ADD, &data);
}
void CMyDlg::removeIconFromTray()
{
NOTIFYICONDATA data;
data.cbSize = sizeof(data);
data.hWnd = m_hWnd;
data.uID = (UINT)this;
Shell_NotifyIcon (NIM_DELETE, &data);
}
这段代码有什么问题,以及一旦从那里删除它的代码完成工作,如何实现图标从托盘中消失?