You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.0 KiB
87 lines
2.0 KiB
//---------------------------------------------------------------------------
|
|
//---------------------------------------------------------------------------
|
|
|
|
#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;
|
|
}
|
|
|