bool wxTaskBarIconEx::SetBalloon(const wxIcon& icon, const wxString title, const wxString message, unsigned int timeout, unsigned int iconballoon) { if (!IsOK()) return false; wxString strTip = wxEmptyString; if (!IsBalloonsSupported()) strTip = title + wxT(" - ") + message; memset(¬ifyData, 0, sizeof(notifyData)); notifyData.cbSize = sizeof(notifyData); notifyData.hWnd = (HWND) m_hWnd; notifyData.uID = 99; notifyData.uCallbackMessage = sm_taskbarMsg; notifyData.uFlags = NIF_MESSAGE; notifyData.dwInfoFlags = iconballoon | NIIF_NOSOUND; notifyData.uTimeout = timeout; notifyData.uVersion = NOTIFYICON_VERSION; if (icon.Ok()) { notifyData.uFlags |= NIF_ICON; notifyData.hIcon = (HICON) icon.GetHICON(); } if (IsBalloonsSupported()) { notifyData.uFlags |= NIF_INFO | NIF_TIP; lstrcpyn(notifyData.szInfo, WXSTRINGCAST message, sizeof(notifyData.szInfo)); lstrcpyn(notifyData.szInfoTitle, WXSTRINGCAST title, sizeof(notifyData.szInfoTitle)); lstrcpyn(notifyData.szTip, WXSTRINGCAST wxEmptyString, sizeof(notifyData.szTip)); } else { notifyData.uFlags |= NIF_TIP; lstrcpyn(notifyData.szTip, WXSTRINGCAST strTip, sizeof(notifyData.szTip)); } UpdateIcon(); return m_iconAdded; }
void wxTaskBarIconEx::UpdateIcon() { if (m_iconAdded) { Shell_NotifyIcon(NIM_MODIFY, ¬ifyData); } else { m_iconAdded = (Shell_NotifyIcon(NIM_ADD, ¬ifyData) != 0); if (IsBalloonsSupported()) { Shell_NotifyIcon(NIM_SETVERSION, ¬ifyData); } } }