|
|
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include "pch.h"
#include "traynoti.h"
#include "resource.h"
//
// Modifies the Tray notification icon.
//
BOOL Tray_Message(HWND hDlg, DWORD dwMessage, UINT uID, HICON hIcon, LPTSTR pszTip) { NOTIFYICONDATA tnd;
tnd.cbSize = sizeof(NOTIFYICONDATA); tnd.hWnd = hDlg; tnd.uID = uID;
tnd.uFlags = NIF_MESSAGE|NIF_ICON; tnd.uCallbackMessage = TRAY_NOTIFY; tnd.hIcon = hIcon;
// Work out what tip we sould use and set NIF_TIP
*tnd.szTip=0; if (pszTip) { if(HIWORD(pszTip)) { lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip)); tnd.uFlags |= NIF_TIP; } else { if( LoadString(vhinstCur, LOWORD(pszTip), tnd.szTip, sizeof(tnd.szTip) ) ) tnd.uFlags |= NIF_TIP; } }
return Shell_NotifyIcon(dwMessage, &tnd); }
//
// Removes the icon from the Tray.
//
BOOL Tray_Delete(HWND hDlg) { return Tray_Message(hDlg, NIM_DELETE, 0, NULL, NULL); }
//
//
//
BOOL Tray_Add(HWND hDlg, UINT uIndex) { HICON hIcon;
DEBUG_PRINT(("Tray_Add used: Should use Tray_Modify instead"));
if(!(hIcon = LoadImage(vhinstCur, MAKEINTRESOURCE(uIndex), IMAGE_ICON, 16, 16, 0))) return FALSE; return Tray_Message(hDlg, NIM_ADD, 0, hIcon, NULL); }
//
// Will add the tray icon if its not already there. LPTSTR can be a MAKEINTRESOURCE
// If uIndex is NULL then we are to remove the tip
//
BOOL Tray_Modify(HWND hDlg, UINT uIndex, LPTSTR pszTip) { HICON hIcon;
if( !uIndex ) return Tray_Delete(hDlg);
if(!(hIcon = LoadImage(vhinstCur, MAKEINTRESOURCE(uIndex), IMAGE_ICON, 16, 16, 0))) { DEBUG_PRINT(("Tray_Add: LoadIcon failed for icon %d\n",uIndex)); return FALSE; }
// If the notify fails, try adding the icon.
if(!Tray_Message(hDlg, NIM_MODIFY, 0, hIcon, pszTip)) return Tray_Message(hDlg, NIM_ADD, 0, hIcon, pszTip); return TRUE; }
|