以下のコードを使用すると、メソッドを呼び出した直後にアイコンがトレイに残り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);
}
このコードの何が問題なのか、また、トレイからアイコンを削除するコードが機能し終わるとすぐにアイコンがトレイから消えるようにする方法を教えてください。